Linux 学习 16

Posted zhopper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 学习 16相关的知识,希望对你有一定的参考价值。

1、使用rsync+inotify实现/www目录实时同步

环境:centos8-01  192.168.30.8  inotify+rsync 客户端

   centos8-02  192.168.30.18  rsync 服务器端

centos8-01:
安装相关软件:
yum -y install rsync inotify-tools

创建共享目录:
mkdir /www

centos8-02:
安装rsync-daemon包,启动服务
yum -y install rsync-daemon

systemctl start rsyncd

更改rsync配置文件,设置同步的目标文件夹
mkdir /backup

vim /etc/rsync.conf
uid = root
gid = root
use chroot =no
max connections = 0
ignore errors
exclude = lost+found/
log file= /var/log/rsync.log
pid file = /var/run/rsyncd.pid
lock file= /var/run/rsyncd.lock
reverse lookup = no

[backup]
path = /backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass

创建同步时使用的用户名和密码文件:
echo \'rsyncuser:123456\' > /etc/rsync.pass
chmod 600 /etc/rsync.pass

centos8-01:
测试:
rsync f1.txt rsyncuser@192.168.30.18::backup

可在客户端指定密码文件,这样可以取消输入密码的步骤,改成了非交互方式
centos8-01:
echo \'123456\' > /etc/rsync.pass
chmod 600 /etc/rsync.pass
测试:
rsync -az --password-file=/etc/rsync.pass f9.txt rsyncuser@192.168.30.18::backup

centos8-01:
设置脚本,将inotify和rsync结合,一旦检测文件有变化,立即同步
#!/bin/bash
inotifywait -mrq --exclude=".*\\.swp|swx" --timefmt \'%Y-%m-%d %H:%M:%S\' --format \'%T %w %f\' \\
-e create,delete,moved_to,close_write,attrib /www/ | while read DATE TIME DIR FILE;
do
psync -az --delete --password-file=/etc/rsync.pass /www/ rsyncuser@192.168.30.18::backup && \\
echo "${DATE} ${TIME} ,file was backuped" >>/var/log/sync.log
done


2、使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝

环境:centos8-02  192.168.30.18    测试客户端

    centos8-01 192.168.30.8      各个服务和防火墙主机

确认测试的服务端口都已开启:

\'Linux


centos8-01: 设置防火墙策略
允许了控制主机:
iptables -A INPUT -s 192.168.30.1 -j ACCEPT

拒绝其它所有访问:
iptables -A INPUT -j REJECT

放行允许的服务端口:
iptables -I INPUT 2 -p tcp -m multiport --dports 23,21,20,80,445,139 -j ACCEPT

测试:

\'Linux


3、NAT原理总结

   可以让公司内部的网络主机通过单个公网出口地址访问公网资源

   分为SNAT和DNAT

   SNAT :让内网主机通过出口公网地址去访问公网资源,内部实际是修改了源IP地址

   DNAT:将内网中的某个服务开放给Internet访问,从外来说是隐藏了目标IP地址


4、iptables实现SNAT和DNAT,并对规则持久保存

环境:centos8-01 192.168.30.8  外网主机地址

          centos8-02  192.168.30.18 防火墙外网地址 , 172.35.30.10 防火墙内网地址

    centos6   172.35.30.20  内网客户端地址

SNAT实现:
iptables -t nat -A POSTROUTING -s 172.35.30.0/24 -j SNAT --to-source 192.168.30.18

测试:

\'Linux


DNAT实现:
iptables -t nat -A PREROUTING -d 192.168.30.18 -p tcp --dport 22 -j DNAT --to-destination 172.35.30.20:22

对规则永久保存:
iptables-save .> /data/iptables-rules

还原规则:
iptables-restore < /data/iptables-rules


5、LVS调度算法总结

      分为两大类:静态方法、动态方法

      静态方法:不考虑后端服务器的状态,比如负载等,只通过算法本身进行调度

               四种静态算法:

                      RR: roundrobin,  轮询,如第一个请求来了,就给第一个RS,第二个给第二个RS,依次类推,然后再从头开始

                      WRR: weighted RR ,加权轮询,将性能好的机器的权重设高点,这样请求来的时候侧重调度到性能好的机器上

                      SH:source hashing ,对请求者的IP地址做哈希,得到的值和后端RS数量做取模,然后在转发到对应的RS机器上,可实现session 绑定

                      DH:destination hashing,请求某个资源时,会经过LVS,LVS对报文中的目标地址做哈希,再转发到RS服务器上,后面如果还有请求相同的资源就一直转发此RS服务器  


       动态方法:根据每个RS的负载状态及调度算法进行调度,根据overhead值来调度, overhead值越大负载越高

                       LC : least connections 最少连接算法, 适用于长连接的应用

                                 overhead=activeconns*256 + inactiveconns

                                 activeconns 活动连接,有数据传输                                          

                                 inactiveconns 非活动连接,只建立了连接,但是没有数据传输


                        WLC   weighted LC  默认调度算法

                                  overhead=(activeconns*256 + inactiveconns)/ weight

                        WLC调度算法缺陷:在系统初始的时候,连接和非连接都是0,那么无论怎么除,都是0,导致权重高的机器可能没有被调度

                                         

                        SED: shortest expection delay  ,初始连接高权重优先

                                  overhead=(activeconns+1)*256 / weight


                         NQ: never queue  ,第一轮平均分配,后续SED


                         LBLC:locality-based LC,动态DH算法,根据负载状态实现正向代理

                         LBLCR: LBLC with Replication , 带复制功能的LBLC,解决LBLC负载不均衡,从负载重的复制到负载轻的RS


在centos8上,新增的调度算法: FO 和 OVF

          FO:  weighted fail over ,遍历所有RS的列表,找到未过载且权重最高的RS,进行调度,未过载的设置:未设置IP_VS_DEST_F_OVERLOAD标志


          OVF: overflow-connection  基于RS的活动连接数和权重值实现调度,将新连接调度到权重值最高的RS上,直到连接数量超过权重值,再调度到下一个权重值最高的RS上,一个可用的RS需要同时满足如下条件:

                      1、未过载,未设置IP_VS_DEST_F_OVERLOAD标志

                      2、RS服务器当前活动连接数量小于其权重值

                      3、权重值不能为零












以上是关于Linux 学习 16的主要内容,如果未能解决你的问题,请参考以下文章

向Linus学习,让代码具有good taste

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02

Linux学习OpenCV+ROS 实现人脸识别(Ubantu16.04)

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段