keeplived高可用
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# ls
_grains haproxy httpd nginx pkgs top.sls users
[root@server1 salt]# mkdir keepalived
[root@server1 salt]# ls
_grains haproxy httpd keepalived nginx pkgs top.sls users
[root@server1 salt]# cd keepalived/
[root@server1 keepalived]# ls
[root@server1 keepalived]# mkdir files
[root@server1 keepalived]# ls
files
[root@server1 keepalived]# cd files/
[root@server1 files]# pwd
/srv/salt/keepalived/files
[root@foundation52 kiosk]# scp keepalived-2.0.6.tar.gz server1:/srv/salt/keepalived/files
root@server1's password:
keepalived-2.0.6.tar.gz 100% 834KB 833.9KB/s 00:00
[root@server1 files]# pwd
/srv/salt/keepalived/files
[root@server1 files]# ls
keepalived-2.0.6.tar.gz
[root@server1 files]# cd
[root@server1 keepalived]# vim install.sls
##########################
1 include:
2 - pkgs.make
3
4 kp-install:
5 file.managed:
6 - name: /mnt/keepalived-2.0.6.tar.gz
7 - source: salt://keepalived/files/keepalived-2.0.6.tar.gz
8 cmd.run:
9 - name: cd /mnt && tar zxf keepalived-2.0.6.tar.gz && cd keepalived-2.0.6 && ./configure --prefix=/usr/local/keepalived --with-init=SYSV &> /dev/null && make &> /dev/null && make install &> /dev/null
10 - creates: /usr/local/keepalived
[root@server1 keepalived]# salt server4 state.sls keepalived.install
测试:
##在推送过程中查看到正在编译
[root@server4 mnt]# ps -ax
...............
5608 ? S 0:00 make
5609 ? S 0:00 /bin/sh -c fail=; \?if (target_option=k; case ${target
5694 ? S 0:00 /bin/sh -c fail=; \?if (target_option=k; case ${target
5695 ? S 0:00 make all
5696 ? S 0:00 /bin/sh -c fail=; \?if (target_option=k; case ${target
5759 ? S 0:00 /bin/sh -c fail=; \?if (target_option=k; case ${target
5760 ? S 0:00 make all
5782 ? S 0:00 /bin/sh -c echo " CC " vrrp.o;gcc -DHAVE_CONFIG_
5783 ? S 0:00 gcc -DHAVE_CONFIG_H -I. -I../../lib -I./../include -I.
5791 pts/0 R+ 0:00 ps -ax
5792 ? R 0:00 as -Qy -o vrrp.o /tmp/ccu9OxBU.s
##推送完成后查看到编译完成
[root@server4 mnt]# ps -ax
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
PID TTY STAT TIME COMMAND
.................
1431 ? S 0:00 pickup -l -t fifo -u
1432 ? Ss 0:00 sshd: root@pts/0
1434 pts/0 Ss 0:00 -bash
1781 ? Sl 0:06 /usr/bin/python2.6 /usr/bin/salt-minion -c /etc/salt -
1782 ? S 0:00 /usr/bin/python2.6 /usr/bin/salt-minion -c /etc/salt -
6250 pts/0 R+ 0:00 ps -ax
[root@server4 mnt]# ll -d /usr/local/keepalived/
drwxr-xr-x 6 root root 4096 Aug 18 11:15 /usr/local/keepalived/
[root@server4 mnt]# ls
keepalived-2.0.6 keepalived-2.0.6.tar.gz
[root@server4 mnt]# cd /usr/local/keepalived/
[root@server4 keepalived]# ls
bin etc sbin share
[root@server4 init.d]# pwd
/usr/local/keepalived/etc/rc.d/init.d
[root@server4 init.d]# ls
keepalived
[root@server4 init.d]# scp keepalived server1:/srv/salt/keepalived/files
The authenticity of host 'server1 (172.25.52.1)' can't be established.
RSA key fingerprint is fc:68:3f:d9:a8:07:dd:06:20:09:b5:02:fb:33:a9:99.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server1,172.25.52.1' (RSA) to the list of known hosts.
root@server1's password:
keepalived 100% 1308 1.3KB/s 00:00
[root@server4 keepalived]# pwd
/usr/local/keepalived/etc/keepalived
[root@server4 keepalived]# ls
keepalived.conf samples
[root@server4 keepalived]# scp keepalived.conf server1:/srv/salt/keepalived/files
root@server1's password:
keepalived.conf 100% 3550 3.5KB/s 00:00
[root@server1 keepalived]# vim install.sls
##########################
1 include:
2 - pkgs.make
3
4 kp-install:
5 file.managed:
6 - name: /mnt/keepalived-2.0.6.tar.gz
7 - source: salt://keepalived/files/keepalived-2.0.6.tar.gz
8 cmd.run:
9 - name: cd /mnt && tar zxf keepalived-2.0.6.tar.gz && cd keepalived-2.0.6 && ./configure --prefix=/usr/local/keepalived --with-init=SYSV &> /dev/null && make &> /dev/null && make install &> /dev/null
10 - creates: /usr/local/keepalived
11
12 /etc/keepalived:
13 file.directory:
14 - mode: 755
15
16 /etc/sysconfig/keepalived:
##symlink 表示软连接
17 file.symlink:
##target 表示目标
18 - target: /usr/local/keepalived/etc/sysconfig/keepalived
19
20 /sbin/keepalived:
21 file.symlink:
22 - target: /usr/local/keepalived/sbin/keepalived
[root@server1 keepalived]# salt server4 state.sls keepalived.install
##测试:
[root@server4 sbin]# pwd
/usr/local/keepalived/sbin
[root@server4 sbin]# ls
keepalived
[root@server4 sbin]# ll keepalived
-rwxr-xr-x 1 root root 1652046 Aug 18 11:15 keepalived
[root@server4 sbin]# ll /usr/local/keepalived/etc/sysconfig/keepalived
-rw-r--r-- 1 root root 667 Aug 18 11:15 /usr/local/keepalived/etc/sysconfig/keepalived
[root@server4 sbin]# cd /etc/keepalived/
[root@server4 keepalived]# ll /etc/sysconfig/ke
keepalived kernel keyboard
[root@server4 keepalived]# ll /etc/sysconfig/keepalived
lrwxrwxrwx 1 root root 46 Aug 18 11:15 /etc/sysconfig/keepalived -> /usr/local/keepalived/etc/sysconfig/keepalived
[root@server4 keepalived]# ll /sbin/keepalived
lrwxrwxrwx 1 root root 37 Aug 18 11:15 /sbin/keepalived -> /usr/local/keepalived/sbin/keepalived
[root@server1 keepalived]# cd /srv/pillar/
[root@server1 pillar]# ls
top.sls web
[root@server1 pillar]# cd web/
[root@server1 web]# ls
install.sls
##查看文件
[root@server1 web]# vim install.sls
[root@server1 web]# cd ..
[root@server1 pillar]# ls
top.sls web
[root@server1 pillar]# mkdir keepalived
[root@server1 pillar]# cd keepalived/
[root@server1 keepalived]# ls
##创建文件
[root@server1 keepalived]# vim install.sls
[root@server1 keepalived]# pwd
/srv/pillar/keepalived
[root@server1 keepalived]# cp ../web/install.sls .
cp: overwrite `./install.sls'? yes
##更改文件
[root@server1 keepalived]# vim install.sls
#########################
1 {% if grains['fqdn'] == 'server1' %}
2 state: MASTER
3 vird: 11
4 priority: 100
5 {% elif grains['fqdn'] == 'server4' %}
6 state: BACKUP
7 vird: 11
8 priority: 50
9 {% endif %}
[root@server1 pillar]# pwd
/srv/pillar
[root@server1 pillar]# ls
keepalived top.sls web
[root@server1 pillar]# vim top.sls
######################
1 base:
2 '*':
3 - web.install
4 - keepalived.install
[root@server1 keepalived]# pwd
/srv/salt/keepalived
[root@server1 keepalived]# ls
files install.sls service.sls
[root@server1 keepalived]# vim service.sls
##########################
1 include:
2 - keepalived.install
3
4 /etc/keepalived/keepalived.conf:
5 file.managed:
6 - source: salt://keepalived/files/keepalived.conf
7 - template: jinja ##添加模块
8 - context:
9 STATE: {{ pillar['state'] }}
10 VRID: {{ pillar['vird'] }}
11 PRIORITY: {{ pillar['priority'] }}
12
13 kp-service:
14 file.managed:
15 - name: /etc/init.d/keepalived
16 - source: salt://keepalived/files/keepalived
17 - mode: 755
18 service.running:
19 - name: keepalived
20 - reload: True
21 - watch:
22 - file: /etc/keepalived/keepalived.conf
[root@server1 keepalived]# pwd
/srv/salt/keepalived
[root@server1 keepalived]# vim service.sls
##########################
3 global_defs {
4 notification_email {
5 root@localhost
6 }
7 notification_email_from keepalived@localhost
8 smtp_server 127.0.0.1
9 smtp_connect_timeout 30
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 #vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
17 vrrp_instance VI_1 {
18 state {{ STATE}}
19 interface eth0
20 virtual_router_id {{ VRID }}
21 priority {{ PRIORITY }}
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26 }
27 virtual_ipaddress {
28 172.25.52.100
29 }
30 }
[root@server1 keepalived]# salt server4 state.sls keepalived.service
测试:
[root@server4 keepalived]# pwd
/etc/keepalived
[root@server4 keepalived]# ls
keepalived.conf
[root@server4 keepalived]# ll /etc/init.d/keepalived
-rwxr-xr-x 1 root root 1308 Aug 18 12:46 /etc/init.d/keepalived
[root@server4 keepalived]# ps ax
PID TTY STAT TIME COMMAND
...................
6381 ? Ss 0:00 keepalived -D
6384 ? S 0:00 keepalived -D
6412 pts/0 R+ 0:00 ps ax
##查看到vip 172.25.52.100
[root@server4 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:1f:e1:e4 brd ff:ff:ff:ff:ff:ff
inet 172.25.52.4/24 brd 172.25.52.255 scope global eth0
inet 172.25.52.100/32 scope global eth0
inet6 fe80::5054:ff:fe1f:e1e4/64 scope link
valid_lft forever preferred_lft forever
[root@server4 keepalived]# yum list mailx
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Available Packages
mailx.x86_64 12.4-7.el6 rhel-source
[root@server4 keepalived]# yum install mailx -y
[root@server1 keepalived]# yum install mailx -y
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# vim top.sls
####################
1 base:
2 'server1':
3 - haproxy.install
4 - keepalived.service
5 'server4':
6 - haproxy.install
7 - keepalived.service
8 'server2':
9 - httpd.install
10 'server3':
11 - nginx.service
[root@server1 salt]# salt '*' state.highstate
##测试:
##vip跳转到server1上
[root@server1 salt]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:95:83:3a brd ff:ff:ff:ff:ff:ff
inet 172.25.52.1/24 brd 172.25.52.255 scope global eth0
inet 172.25.52.100/32 scope global eth0
inet6 fe80::5054:ff:fe95:833a/64 scope link
valid_lft forever preferred_lft forever
[root@server4 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:1f:e1:e4 brd ff:ff:ff:ff:ff:ff
inet 172.25.52.4/24 brd 172.25.52.255 scope global eth0
inet6 fe80::5054:ff:fe1f:e1e4/64 scope link
valid_lft forever preferred_lft forever
##查看到keeplived进程
[root@server1 salt]# ps ax
PID TTY STAT TIME COMMAND
21283 ? Ss 0:00 keepalived -D
21285 ? S 0:00 keepalived -D
22994 pts/0 R+ 0:00 ps ax
测试:
[root@server1 salt]# /etc/init.d/keepalived stop
Stopping keepalived: [ OK ]
测试:
即使关闭server1的keepalived(模拟server1被破坏) 此时仍然可以实现负载均衡 即为高可用
##server1坏掉后 vip自动跳转到server4上
[root@server1 salt]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:95:83:3a brd ff:ff:ff:ff:ff:ff
inet 172.25.52.1/24 brd 172.25.52.255 scope global eth0
inet6 fe80::5054:ff:fe95:833a/64 scope link
valid_lft forever preferred_lft forever
[root@server4 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:1f:e1:e4 brd ff:ff:ff:ff:ff:ff
inet 172.25.52.4/24 brd 172.25.52.255 scope global eth0
inet 172.25.52.100/32 scope global eth0
inet6 fe80::5054:ff:fe1f:e1e4/64 scope link
valid_lft forever preferred_lft forever
[root@server1 salt]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
测试:
##此时vip又会跳转到server1上
[root@server1 salt]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:95:83:3a brd ff:ff:ff:ff:ff:ff
inet 172.25.52.1/24 brd 172.25.52.255 scope global eth0
inet 172.25.52.100/32 scope global eth0
inet6 fe80::5054:ff:fe95:833a/64 scope link
valid_lft forever preferred_lft forever
[root@server4 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:1f:e1:e4 brd ff:ff:ff:ff:ff:ff
inet 172.25.52.4/24 brd 172.25.52.255 scope global eth0
inet6 fe80::5054:ff:fe1f:e1e4/64 scope link
valid_lft forever preferred_lft forever