补充比较杂

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

  

Centos7.4安装配置haproxy和Keepalived补充内容的更多相关文章

  1. Centos7.4安装配置haproxy和Keepalived

    系统版本是centos7.4的 [root@data-1-1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [roo ...

  2. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived 安装配置Keepalived 1.编写功能模块 #创建keepalived目录# mkdir -p ...

  3. SaltStack自动化安装配置haproxy的Keepalived

    keepalived配置安装 什么是vrrp,阿里云不支持组播,所以阿里云上不能配置keepalived,但是它有自己的slb.运维的大忌,在命令行复制粘贴,一般是先复制到文本中查看确认以后salt编 ...

  4. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  5. Centos7下安装配置Redsocks

    Redsocks是一个开源的网络程序,代码依赖开源的libevent网络库.Redsocks允许你将所有TCP连接重定向到SOCKS或HTTPS代理,比如Shadowsocks(Centos7下安装配 ...

  6. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy 下载haproxy1.6.2.tar.gz下载地址:http://www.haproxy.org/download/1. ...

  7. centos7 yum安装配置redis 并设置密码

    原文:https://www.cnblogs.com/fanlinglong/p/6635828.html centos7 yum安装配置redis 并设置密码 1.设置Redis的仓库地址 yum ...

  8. centos7 rabbitmq安装/配置

    原文:centos7 rabbitmq安装/配置     因为RabbitMQ是由erlang实现的,所以要先安装erlang再安装rabbitMQ   1.先配置yum软件源地址EPEL(EPEL是 ...

  9. Centos7下安装配置keepalived

    这里用的是两台设备做高可用 master服务器ip地址:192.168.12.78 slave服务器ip地址:192.168.12.79 虚拟ip(VIP,一个尚未占用的内网ip即可)地址:192.1 ...

随机推荐

  1. 近期Freecodecamp问题总结

    最近没什么事,刷了freecodecamp的算法题,发现了自己基础的薄弱 1 where are thou 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对( ...

  2. Android 开发版本统一

    一.概述 对于 Android 开发版本的统一涉及到的东西就是 Gradle 中的全局设置,我们通过配置 gradle 也就是编写 Groovy 代码将开发中的版本号设置为全局参数.这样就能够在 mo ...

  3. 清理SuperMap三维缓存

    一.iclient三维插件浏览器端缓存 方法1:遍历users子文件夹,发现指定目录有supermap,即删除 @echo offtitle 清理三维缓存@echo 开始清理三维缓存...for /f ...

  4. [flask]gunicorn配置文件

    配置文件 #!/home/xx/.virtualenvs/xx/bin/python # encoding: utf-8 import multiprocessing # 监听端口 bind = '0 ...

  5. RabbitMQ(2) 一般介绍

    RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apa ...

  6. JS正则表达式分组模式

    分组的概念 分组就是在正则表达式中用()包起来的内容代表了一个分组,如下: var reg=/([0-9]{3})([a-z]{2})/ var str="123ab" conso ...

  7. xml字符串,xml对象,数组之间的相互转化

    <?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller { pu ...

  8. sevrlet进行用户名密码校验

    在eclipse中建立了web项目,实现注册和登录还有在个人中心显示用户名密码 注册功能 源码如下 package com.sevlet.demo; import java.io.IOExceptio ...

  9. Django框架(二)

    四.Django简介 1.MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方 ...

  10. 解决table宽度设置不起作用,由于内容问题被撑开 亲测 完美解决

    1.在table 标签添加样式 table-layout: fixed; 必须设置width的值:<table style="table-layout: fixed"> ...