补充比较杂
1、当master服务恢复正常之后,backup机器收到消息,然后让出vip
下面是master机器服务恢复正常后,backup机器的Keepalived日志
收到master的消息通知,对方优先级是150,自己的是100,然后进入backup状态,移除vip
Apr 12 19:10:28 data-1-2 Keepalived_vrrp[13309]: Sending gratuitous ARP on eth0 for 10.0.1.63 Apr 12 19:10:28 data-1-2 Keepalived_vrrp[13309]: Sending gratuitous ARP on eth0 for 10.0.1.63 Apr 12 19:10:28 data-1-2 Keepalived_vrrp[13309]: Sending gratuitous ARP on eth0 for 10.0.1.63 Apr 13 10:40:14 data-1-2 Keepalived_vrrp[13309]: VRRP_Instance(VI_1) Received advert with higher priority 150, ours 100 Apr 13 10:40:14 data-1-2 Keepalived_vrrp[13309]: VRRP_Instance(VI_1) Entering BACKUP STATE Apr 13 10:40:14 data-1-2 Keepalived_vrrp[13309]: VRRP_Instance(VI_1) removing protocol VIPs.
2、启动Keepalived服务,可以看到3个进程
[root@data-1-1 ~]# ps -ef |grep keep root 6592 1 0 Apr12 ? 00:00:01 /application/keepalived-1.3.5/sbin/keepalived -D -d -S 0 root 6593 6592 0 Apr12 ? 00:00:01 /application/keepalived-1.3.5/sbin/keepalived -D -d -S 0 root 6594 6592 0 Apr12 ? 00:00:13 /application/keepalived-1.3.5/sbin/keepalived -D -d -S 0 root 6664 6020 0 Apr12 pts/2 00:00:01 tail -F /var/log/keepalived.log root 19467 5979 0 10:45 pts/1 00:00:00 grep --colour=auto keep [root@data-1-1 ~]#
3、cat追加内容和覆盖内容,以及内容含有$变量符号的处理方式
转自http://www.361way.com/cat-eof-cover-append/4298.html
(1)覆盖
方式1
#!/bin/bash cat << EOF > /root/test.txt Hello! My site is www.361way.com My site is www.91it.org Test for cat and EOF! EOF
方式2
我喜欢这种
#!/bin/bash cat > /root/test.txt <<EOF Hello! My site is www.361way.com My site is www.91it.org Test for cat and EOF! EOF
(2)追加
覆盖的写法基本和追加一样,不同的是单重定向号变成双重定向号
方式1
#!/bin/bash cat << EOF >> /root/test.txt Hello! My site is www.361way.com My site is www.91it.org Test for cat and EOF! EOF
方式2
#!/bin/bash cat >> /root/test.txt <<EOF Hello! My site is www.361way.com My site is www.91it.org Test for cat and EOF! EOF
需要注意的是,不论是覆盖还是追加,在涉及到变量操作时是需要进行转义的,例如:
#!/bin/bash cat <<EOF >> /root/a.txt PATH=$PATH:$HOME/bin export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1 export ORACLE_SID=yqpt export PATH=$PATH:$ORACLE_HOME/bin export NLS_LANG="AMERICAN_AMERICA.AL32UTF8" EOF
4、正常安装之后的Keepalived服务启动日志
可以看到启动读取的配置文件和根据配置文件打印的详细信息
有些配置不在配置文件中写,它会自动按照默认配置补充上去
配置文件是单播的启动日志
下面可以看到已经涉及单播了 VRRP check unicast_src = false
vrrp_check_unicast_src:在单播模式中,开启对VRRP数据包的源地址做检查,源地址必须是单播邻居之一
Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6453]: Stopped Apr 12 16:27:12 data-1-2 Keepalived[6451]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 Apr 12 16:27:12 data-1-2 Keepalived[6602]: Starting Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 Apr 12 16:27:12 data-1-2 Keepalived[6602]: Unable to resolve default script username 'keepalived_script' - ignoring Apr 12 16:27:12 data-1-2 Keepalived[6602]: Opening file '/etc/keepalived/keepalived.conf'. Apr 12 16:27:12 data-1-2 Keepalived[6603]: Starting Healthcheck child process, pid=6604 Apr 12 16:27:12 data-1-2 Keepalived_healthcheckers[6604]: Initializing ipvs Apr 12 16:27:12 data-1-2 Keepalived[6603]: Starting VRRP child process, pid=6605 Apr 12 16:27:12 data-1-2 Keepalived_healthcheckers[6604]: Opening file '/etc/keepalived/keepalived.conf'. Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Registering Kernel netlink reflector Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Registering Kernel netlink command channel Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Registering gratuitous ARP shared channel Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Opening file '/etc/keepalived/keepalived.conf'. Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP_Instance(VI_1) removing protocol VIPs. Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: WARNING - script `killall` resolved by path search to `/usr/bin/killall`. Please specify full path. Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: SECURITY VIOLATION - scripts are being executed but script_security not enabled. Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: ------< Global definitions >------ Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Router ID = Haproxy_2 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Smtp server = 127.0.0.1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Smtp server port = 25 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Smtp HELO name = data-1-2 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Smtp server connection timeout = 3 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Email notification from = Haproxy_KeepAlived@163.com Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Email notification = 525031638@qq.com Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Default interface = eth0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: LVS flush = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP IPv4 mcast group = 224.0.0.18 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP IPv6 mcast group = ff02::12 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP delay = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP repeat = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP refresh timer = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP refresh repeat = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP lower priority delay = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP lower priority repeat = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Send advert after receive lower priority advert = true Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Send advert after receive higher priority advert = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP interval = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous NA interval = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP default protocol version = 2 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Iptables input chain = INPUT Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP check unicast_src = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP skip check advert addresses = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP strict mode = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP process priority = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP don't swap = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Checker process priority = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Checker don't swap = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Network namespace = (default) Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Script security disabled Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Default script uid:gid 0:0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: ------< VRRP Topology >------ Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP Instance = VI_1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Using VRRPv2 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Want State = BACKUP Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Running on device = eth0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Skip checking advert IP addresses = no Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Enforcing strict VRRP compliance = no Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Using src_ip = 10.0.1.62 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP delay = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP repeat = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP refresh timer = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP refresh repeat = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP lower priority delay = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Gratuitous ARP lower priority repeat = 5 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Send advert after receive lower priority advert = true Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Send advert after receive higher priority advert = false Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Virtual Router ID = 80 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Priority = 100 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Advert interval = 5 sec Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Accept enabled Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Promote_secondaries disabled Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Authentication type = SIMPLE_PASSWORD Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Password = ha_keep Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Tracked scripts = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: chk_haproxy weight 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Unicast Peer = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: 10.0.1.61 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Virtual IP = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: 10.0.1.63/24 dev eth0 scope global Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: ------< VRRP Scripts >------ Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP Script = chk_haproxy Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Command = /usr/bin/killall -0 haproxy Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Interval = 3 sec Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Timeout = 0 sec Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Weight = 0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Rise = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Fall = 1 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Insecure = no Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Status = INIT Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: ------< NIC >------ Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Name = eth0 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: index = 2 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: IPv4 address = 10.0.1.62 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: IPv6 address = :: Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: MAC = 00:50:56:9d:50:d7 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: is UP Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: is RUNNING Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: MTU = 1500 Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: HW Type = ETHERNET Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: Using LinkWatch kernel netlink reflector... Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP_Instance(VI_1) Entering BACKUP STATE Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP sockpool: [ifindex(2), proto(112), unicast(1), fd(10,11)] Apr 12 16:27:12 data-1-2 Keepalived_vrrp[6605]: VRRP_Script(chk_haproxy) succeeded Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: ------< Global definitions >------ Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Router ID = Haproxy_2 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Smtp server = 127.0.0.1 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Smtp server port = 25 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Smtp HELO name = data-1-2 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Smtp server connection timeout = 3 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Email notification from = Haproxy_KeepAlived@163.com Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Email notification = 525031638@qq.com Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Default interface = eth0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: LVS flush = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP IPv4 mcast group = 224.0.0.18 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP IPv6 mcast group = ff02::12 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP delay = 5 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP repeat = 5 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP refresh timer = 0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP refresh repeat = 1 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP lower priority delay = 4294 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP lower priority repeat = -1 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Send advert after receive lower priority advert = true Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Send advert after receive higher priority advert = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous ARP interval = 0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Gratuitous NA interval = 0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP default protocol version = 2 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Iptables input chain = INPUT Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP check unicast_src = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP skip check advert addresses = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP strict mode = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP process priority = 0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: VRRP don't swap = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Checker process priority = 0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Checker don't swap = false Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Network namespace = (default) Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Script security disabled Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Default script uid:gid 0:0 Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: ------< SSL definitions >------ Apr 12 16:27:13 data-1-2 Keepalived_healthcheckers[6604]: Using autogen SSL context
5、配置单播和组播通信区别
配置两个节点之间为单播方式,backup收到的数据包是下面形式
[root@data-1-2 keepalived]# tcpdump -vvv -i any host 10.0.1.61 tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 13:11:21.084843 IP (tos 0xc0, ttl 255, id 3, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > data-1-2: vrrp 10.0.1.61 > data-1-2: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" 13:11:26.085600 IP (tos 0xc0, ttl 255, id 4, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > data-1-2: vrrp 10.0.1.61 > data-1-2: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" 13:11:31.086772 IP (tos 0xc0, ttl 255, id 5, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > data-1-2: vrrp 10.0.1.61 > data-1-2: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" ^C 3 packets captured 3 packets received by filter 0 packets dropped by kernel [root@data-1-2 keepalived]#
配置两个节点为组播,backup机器收到的数据包是下面形式
可以看到是vrrp.mcast.net
[root@data-1-2 keepalived]# tcpdump -vvv -i any host 10.0.1.61 tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 13:08:15.571761 IP (tos 0xc0, ttl 255, id 1455, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > vrrp.mcast.net: vrrp 10.0.1.61 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" 13:08:20.572496 IP (tos 0xc0, ttl 255, id 1456, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > vrrp.mcast.net: vrrp 10.0.1.61 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" 13:08:25.573351 IP (tos 0xc0, ttl 255, id 1457, offset 0, flags [none], proto VRRP (112), length 40) 10.0.1.61 > vrrp.mcast.net: vrrp 10.0.1.61 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 80, prio 150, authtype simple, intvl 5s, length 20, addrs: 10.0.1.63 auth "ha_keep^@" ^C 3 packets captured 3 packets received by filter 0 packets dropped by kernel [root@data-1-2 keepalived]#
6、查看Keepalived编译参数
大部分用不到
[root@data-1-1 tools]# tar xfz keepalived-1.3.5.tar.gz [root@data-1-1 tools]# cd keepalived-1.3.5 [root@data-1-1 keepalived-1.3.5]# ./configure --help `configure' configures Keepalived 1.3.5 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/keepalived] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-lvs-syncd do not use LVS synchronization daemon --disable-lvs do not use the LVS framework --disable-lvs-64bit-stats do not use the LVS 64-bit stats --disable-vrrp do not use the VRRP framework --disable-fwmark compile without SO_MARK support --enable-snmp compile with SNMP support --enable-snmp-vrrp compile with SNMP vrrp support --enable-snmp-keepalived obsolete - use --enable-snmp-vrrp --enable-snmp-checker compile with SNMP checker support --enable-snmp-rfc compile with SNMP RFC2787 (VRRPv2) and SNMP RFC6527 (VRRPv3) support --enable-snmp-rfcv2 compile with SNMP RFC2787 (VRRPv2) support --enable-snmp-rfcv3 compile with SNMP RFC6257 (VRRPv3) support --disable-snmp-reply-v3-for-v2 disable RFC6257 responses for VRRPv2 instances --enable-dbus compile with dbus support --enable-dbus-create-instance compile with dbus support for creating instances --enable-sha1 compile with SHA1 support --disable-vrrp-auth compile without VRRP authentication --disable-routes compile without ip rules/routes --enable-dynamic-linking compile with/without dynamically linked libiptc/libipset --enable-libiptc-dynamic compile with libiptc dynamically linked --disable-libipset-dynamic compile with libipset statically linked --enable-libxtables-dynamic compile with libxtables dynamically linked --enable-libnl-dynamic compile with libnl dynamically linked --disable-libiptc compile without libiptc --disable-libipset compile without libipset --disable-libnl compile without libnl --enable-mem-check compile with memory alloc checking --enable-mem-check-log compile with memory alloc checking wriging to syslog --enable-debug compile with debugging flags --enable-stacktrace compile with stacktrace support --enable-profile compile with profiling flags --enable-conversion-checks compile with conversion warnings if sensible --enable-force-conversion-checks compile with conversion warnings --enable-Werror compile with warnings being errors --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-kernel-dir=DIR path to linux kernel source directory --with-init=(upstart|systemd|SYSV|SUSE|openrc) specify init type --with-systemdsystemunitdir=DIR Directory for systemd service files Some influential environment variables: PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <keepalived-devel@lists.sourceforge.net>. Keepalived home page: <http://www.keepalived.org/>. [root@data-1-1 keepalived-1.3.5]#
7、Keepalived修改日志文件输出路径
keepalived默认输出的日志在/var/log/messages
这里修改,让它输出到/var/log/keepalived.log
编译安装的1.3.5版本
看到启动脚本默认读取的是/application/keepalived-1.3.5/etc/sysconfig/keepalived这个文件
但是别的一些默认读取的是/etc/sysconfig/keepalived
都改了
最下面添加一行
-S指定一个syslog设备接收,0表示local0设备
-D是详细日志
-d是dump配置文件内容到日志中
sed -i s#'KEEPALIVED_OPTIONS="-D"'#'KEEPALIVED_OPTIONS="-D -d -S 0"'#g /etc/sysconfig/keepalived /bin/cp /application/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
配置完毕后需要在syslog.conf文件里添加一行,如下
上面配置文件表示syslog让local0接收,local0接收后往后面的/var/log/keepalived.log里面接收
.* 表示所有状态都打
cat >> /etc/rsyslog.conf << EOF #keepalived local0.* /var/log/keepalived.log EOF [root@data-1-1 keepalived]# tail -2 /etc/rsyslog.conf #keepalived local0.* /var/log/keepalived.log [root@data-1-1 keepalived]#
重启rsyslog服务
[root@data-1-1 keepalived]# systemctl restart rsyslog [root@data-1-1 keepalived]#
8、安装一些工具
安装tcpdump,它是个抓包工具,有时候会用到
安装psmisc包,安装之后多了 fuser, killall,pstree等命令,Keepalived的配置文件中健康检查能用到它
yum install tcpdump -y yum install psmisc -y
9、为同一个虚拟IP服务的实例,虚拟路由id必须一致
同一集群的keepalived的主、备机的virtual_router_id 必须相同,取值0-255
但是同一内网中不应有相同virtual_router_id的集群
10、多实例的Keepalived配置文件参考
这样两个机器都在工作,不至于类似单实例有资源浪费的情况
机器1的Keepalived配置
VI_1是master,VI_2是backup
! Configuration File for keepalived global_defs { notification_email { 12345@qq.com } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 10.0.0.1 smtp_connect_timeout 30 router_id LVS_1 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.136/24 10.0.0.137/24 10.0.0.138/24 } } vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 52 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.140/24 10.0.0.141/24 } }
机器2的Keepalived配置
VI_1是backup,VI_2是master
! Configuration File for keepalived global_defs { notification_email { 12345@qq.com } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 10.0.0.1 smtp_connect_timeout 30 router_id LVS_2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.136/24 10.0.0.137/24 10.0.0.138/24 } } vrrp_instance VI_2 { state MASTER interface eth0 virtual_router_id 52 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.140/24 10.0.0.141/24 } }
11、编译Keepalived中出现如下warning不用理会
系统出现警告信息“*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.”,具体日志如下
Keepalived configuration ------------------------ Keepalived version : 1.3.5 Compiler : gcc Preprocessor flags : Compiler flags : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2 Linker flags : Extra Lib : -lcrypto -lssl Use IPVS Framework : Yes IPVS use libnl : No IPVS syncd attributes : No IPVS 64 bit stats : No fwmark socket support : Yes Use VRRP Framework : Yes Use VRRP VMAC : Yes Use VRRP authentication : Yes With ip rules/routes : Yes SNMP vrrp support : No SNMP checker support : No SNMP RFCv2 support : No SNMP RFCv3 support : No DBUS support : No SHA1 support : No Use Debug flags : No Stacktrace support : No Memory alloc check : No libnl version : None Use IPv4 devconf : No Use libiptc : No Use libipset : No init type : upstart Build genhash : Yes Build documentation : No *** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
很多人通过安装下面依赖解决它,我觉得没必要,因为压根用不到ipv6的东西
解决方案一:(在线安装)
执行yum命令yum -y install libnl libnl-devel解决上述警告问题
执行yum命令yum install -y libnfnetlink-devel解决上述错误问题
12、阿里云下载镜像得路径注意下,是isos
https://mirrors.aliyun.com/centos/7.4.1708/isos/x86_64/
13、Keepalived中配置文件也可以自定义监控脚本
#自定义监控脚本 vrrp_script chk_haproxy { script "/etc/keepalived/check_haproxy.sh" interval 5 weight 2 }
14、Keepalived和haproxy配置文件详解
来自下面链接
https://blog.csdn.net/HzSunshine/article/details/61673572
简单参考下
! Configuration File for keepalived global_defs { #设置报警通知邮件地址,可以设置多个 notification_email { msun1996@163.com } #设置邮件的发送地址 notification_email_from keepalived@msun.com #设置smtp server的地址,该地址必须是存在的 smtp_server 127.0.0.1 #设置连接smtp server的超时时间 smtp_connect_timeout 30 #运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息 router_id HAProxy_msun } # 检测haproxy脚本 vrrp_script chk_haproxy { script "/etc/keepalived/check_haproxy.sh" interval 2 #下面方法相对更优 #script "killall -0 haproxy" #killall (安装 yum install psmisc -y) #interval 2 #weghit 2 #权值脚本成功时(0)等于priority+weghit #否则为priority } #定义VRRP实例,实例名自定义 vrrp_instance haproxy_msun { #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器 state MASTER #从设置为BACKUP #指定HA监测的接口 interface eno16777736 #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样 virtual_router_id 68 #优先级,数字越大优先级越高,在一个实例中主服务>器优先级要高于备服务器 priority 100 #从设置为99 #设置主备之间同步检查的时间间隔单位秒 advert_int 1 #设置验证类型和密码 authentication { #验证类型有两种{PASS|HA} auth_type PASS #设置验证密码,在一个实例中主备密码保持一样 auth_pass 1689 } track_script { chk_haproxy # 执行监控的服务 } #定义虚拟IP地址,可以有多个,每行一个 virtual_ipaddress { 192.168.1.160 } }
haproxy配置文件详解1
简单参考下
global #全区日志配置 使用rsyslog的local3设备 log 127.0.0.1 local3 info #工作目录(安全) chroot /var/lib/haproxy #pid文件存储目录 pidfile /var/run/haproxy.pid #后台进程数量 nbproc 1 #每个进程最大并发数 maxconn 40000 user haproxy group haproxy #后台程序模式工作 daemon defaults mode http #后端连接重试次数,超出标识不可用 retries 3 #连接服务器最长等待时间 timeout connect 10s #客户端发送请求最长等待时间 timeout client 30s #服务器会复客户端最长等待时间 timeout server 30s #对后端服务器的检测超时时间 timeout check 10s #定义HAProxy监控页面 listen admin_stats bind 0.0.0.0:9188 mode http log 127.0.0.1 local3 err #HAProxy监控页面统计自动刷新时间。 stats refresh 30s #设置监控页面URL路径。 http://IP:9188/haproxy-status可查看 stats uri /haproxy-status #统计页面密码框提示信息 stats realm welcome login Haproxy #登录统计页面用户和密码 stats auth admin:123456 #隐藏HAProxy版本信息 stats hide-version #设置TURE后可在监控页面手工启动关闭后端真实服务器 stats admin if TRUE #定义前端虚拟节点 frontend www #监听端口 bind *:80 mode http #启用日志记录HTTP请求。 option httplog #启用后后端服务器可以获得客户端IP option forwardfor #客户端和服务器完成一次连接请求后,HAProxy主动关闭TCP链接(优化选项) option httpclose #使用全局日志配置 log global #指定后端服务池(backend定义htmpool) default_backend htmpool #定义后端真实服务器 backend htmpool mode http #用于cookie保持环境。(如后端服务器故障,客户端cookie不会刷新,用此来把用户请求强制定向到正常服务器) option redispatch #负载均衡很高时,自动结束当前队列处理时间长的连接 option abortonclose #负载均衡算法 balance roundrobin #允许向cookie插入SERVERID.下面server可以使用cookie定义 cookie SERVERID #启用HTTP服务状态检测功能 (后端服务器一定要存在此文件,不然haproxy认为其故障) option httpchk GET /index.html #后端服务设置 server web1 192.168.1.186:80 cookie server1 weight 6 check inter 2000 rise 2 fall 3 server web2 192.168.1.188:80 cookie server2 weight 6 check inter 2000 rise 2 fall 3
haproxy配置文件参考2
来自http://blog.chinaunix.net/uid-25266990-id-3989321.html
这里主要看下acl规则
#vim /etc/haproxy/haproxy.cfg # this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #最大连接数 chroot /usr/share/haproxy #改变当前工作目录。 uid 99 #所属用户的uid gid 99 #所属运行的gid daemon #以后台形式运行haproxy #debug #quiet defaults log global mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK option httplog option dontlognull option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 retries 3 #两次连接失败就认为是服务器不可用 maxconn 2000 #默认的最大连接数 #timeout http-keep-alive 10s # timeout queue 1m contimeout 5000 #连接超时 clitimeout 50000 #客户端超时 srvtimeout 50000 #服务器超时 timeout check 5s #心跳检测超时 stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url stats realm baison-test-Haproxy #统计页面密码框上提示文本 stats auth admin:admin123 #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息 frontend www bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。 acl web hdr(host) -i www.zhirs.com #acl后面是规则名称,-i是要访问的域名,如果访问www.zhirs.com这个域名就分发到下面的webserver 的作用域。 acl img hdr(host) -i img.zhirs.com #如果访问img.baison.com.cn就分发到imgserver这个作用域。 use_backend webserver if web use_backend imgserver if img backend webserver #webserver作用域 mode http balance roundrobin #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数 option httpchk /index.html #检测文件,如果分发到后台index.html访问不到就不再分发给它 server web01 192.168.137.201:80 check inter 2000 fall 3 weight 30 server web01 192.168.137.202:80 check inter 2000 fall 3 weight 20 server web01 192.168.137.203:80 check inter 2000 fall 3 weight 10 backend imgserver mode http option httpchk /index.php balance roundrobin server img01 192.168.137.101:80 check inter 2000 fall 3 server img02 192.168.137.102:80 check inter 2000 fall 3
haproxy参考配置3
来自
https://blog.csdn.net/sj349781478/article/details/78862315
global log 127.0.0.1 local0 #[日志输出配置,所有日志都记录在本机,通过local0输出] log 127.0.0.1 local1 notice #定义haproxy 日志级别[error warringinfo debug] daemon #以后台形式运行harpoxy nbproc 1 #设置进程数量 maxconn 4096 #默认最大连接数,需考虑ulimit-n限制 #user haproxy #运行haproxy的用户 #group haproxy #运行haproxy的用户所在的组 #pidfile /var/run/haproxy.pid #haproxy 进程PID文件 #ulimit-n 819200 #ulimit 的数量限制 #chroot /usr/share/haproxy #chroot运行路径 #debug #haproxy 调试级别,建议只在开启单进程的时候调试 #quiet ########默认配置############ defaults log global mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK option httplog #日志类别,采用httplog option dontlognull #不记录健康检查日志信息 retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置 #option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现 #option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 maxconn 4096 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #心跳检测超时 #timeout http-keep-alive10s #默认持久连接超时时间 #timeout http-request 10s #默认http请求超时时间 #timeout queue 1m #默认队列超时时间 balance roundrobin #设置默认负载均衡方式,轮询方式 #balance source #设置默认负载均衡方式,类似于nginx的ip_hash #balnace leastconn #设置默认负载均衡方式,最小连接数 ########统计页面配置######## listen stats bind 0.0.0.0:1080 #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称 mode http #http的7层模式 option httplog #采用http日志格式 #log 127.0.0.1 local0 err #错误日志记录 maxconn 10 #默认的最大连接数 stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url stats realm XingCloud Haproxy #统计页面密码框上提示文本 stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名 stats auth Frank:Frank #设置监控页面的用户和密码:Frank stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本) ########设置haproxy 错误页面##### #errorfile 403 /home/haproxy/haproxy/errorfiles/403.http #errorfile 500 /home/haproxy/haproxy/errorfiles/500.http #errorfile 502 /home/haproxy/haproxy/errorfiles/502.http #errorfile 503 /home/haproxy/haproxy/errorfiles/503.http #errorfile 504 /home/haproxy/haproxy/errorfiles/504.http ########frontend前端配置############## frontend main bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。 acl web hdr(host) -i www.abc.com #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则,。 acl img hdr(host) -i img.abc.com #如果访问img.abc.com这个域名,就触发img规则。 use_backend webserver if web #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域。 use_backend imgserver if img #如果上面定义的img规则被触发,即访问img.abc.com,就将请求分发到imgserver这个作用域。 default_backend dynamic #不满足则响应backend的默认页面 ########backend后端配置############## backend webserver #webserver作用域 mode http balance roundrobin #balance roundrobin 负载轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数 option httpchk /index.html HTTP/1.0 #健康检查, 检测文件,如果分发到后台index.html访问不到就不再分发给它 server web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3 server web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3 #cookie 1表示serverid为1,check inter 1500 是检测心跳频率 #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重 backend imgserver mode http option httpchk /index.php balance roundrobin server img01 192.168.137.101:80 check inter 2000 fall 3 server img02 192.168.137.102:80 check inter 2000 fall 3 backend dynamic balance roundrobin server test1 192.168.1.23:80 check maxconn 2000 server test2 192.168.1.24:80 check maxconn 2000 listen tcptest bind 0.0.0.0:5222 mode tcp option tcplog #采用tcp日志格式 balance source #log 127.0.0.1 local0 debug server s1 192.168.100.204:7222 weight 1 server s2 192.168.100.208:7222 weight 1
15、如果两台Keepalived机器必须开启防火墙的话
假设这里不使用firewalld,使用的是iptables
需要添加源地址信任。不然无法收到心跳报文
master机器添加backup机器的信任
[root@data-1-1 ~]# iptables -I INPUT -s 10.0.1.62 -j ACCEPT [root@data-1-1 ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.1.62 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@data-1-1 ~]#
backup机器添加下来自master机器的信任
[root@data-1-2 ~]# iptables -I INPUT -s 10.0.1.61 -j ACCEPT [root@data-1-2 ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.1.61 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@data-1-2 ~]#
16、模拟裂脑
假如backup机器防火墙设置不当,没允许master的报文。它收不到master的心跳报文,就认为master机器服务down机或者Keepalived服务死掉了
它会自动添加vip,可以看到最后10.0.1.63这个vip自动配置上了。这样就出现裂脑了
[root@data-1-2 ~]# iptables -L -n -t filter --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:18181 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8181 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 4 ACCEPT all -- 10.0.1.61 0.0.0.0/0 5 DROP all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination [root@data-1-2 ~]# iptables -D INPUT 4 [root@data-1-2 ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:18181 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8181 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 DROP all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@data-1-2 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:9d:50:d7 brd ff:ff:ff:ff:ff:ff inet 10.0.1.62/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever [root@data-1-2 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:9d:50:d7 brd ff:ff:ff:ff:ff:ff inet 10.0.1.62/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.0.1.63/24 scope global secondary eth0 valid_lft forever preferred_lft forever [root@data-1-2 ~]#
而此时master机器也没释放资源
[root@data-1-1 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:9d:0b:ee brd ff:ff:ff:ff:ff:ff inet 10.0.1.61/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.0.1.63/24 scope global secondary eth0 valid_lft forever preferred_lft forever [root@data-1-1 ~]#
修复规则,放行来自master机器的数据包,裂脑情况消失
[root@data-1-2 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:9d:50:d7 brd ff:ff:ff:ff:ff:ff inet 10.0.1.62/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.0.1.63/24 scope global secondary eth0 valid_lft forever preferred_lft forever [root@data-1-2 ~]# iptables -I INPUT -s 10.0.1.61 -j ACCEPT [root@data-1-2 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:9d:50:d7 brd ff:ff:ff:ff:ff:ff inet 10.0.1.62/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever [root@data-1-2 ~]#
下面是一些常用的添加防火墙规则的命令
iptables -I INPUT -p tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp --dport 8181 -j ACCEPT iptables -I INPUT -p tcp --dport 18181 -j ACCEPT iptables -A INPUT -j DROP