keepalived

      Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。它是以VRRP协议(虚拟路由冗余协议)为基础的。Keepalived主要有三个模块,分别是core、check和vrrp。Core模块是keepalived的核心模块,主要负责主进程的启动,维护以及全局配置文件的加载和解析。Check模块主要负责健康检查。Vrrp模块主要用来实现VRRP协议的。

环境:一共开启四台主机,每台主机均关闭火墙和selinux,并且都做好解析。sever1:172.25.30.1,server2:172.25.30.2,其中server1充当master,server2充当backup,server4:172.25.30.4,server5:172.25.30.5这两台主机充当real_server,主要用来测试。还有一个Vip:172.25.30.100/24.

首先在官网上下载keepalived的安装包并解压。

[root@server1 ~]# tar zxf keepalived-1.2.20.tar.gz

[root@server1 ~]# cd keepalived-1.2.20

解压完成后进到对应的目录下对其进行编译:

[root@server1 keepalived-1.2.20]# ./configure --prefix=/usr/local/keepalived

如果编译不成功,此时可能时缺少某些包,所以应该先将需要的安装包安装好在对其编译:

[root@server1 keepalived-1.2.20]# yum install openssl-devel -y

[root@server1 keepalived-1.2.20]# ./configure --prefix=/usr/local/keepalived

[root@server1 keepalived-1.2.20]# make

[root@server1 keepalived-1.2.20]# make install

[root@server1 ~]# cd /usr/local/keepalived/

[root@server1 etc]# cd rc.d

[root@server1 rc.d]# ls

init.d

[root@server1 rc.d]# cd init.d/

[root@server1 init.d]# ls

keepalived

[root@server1 init.d]# pwd

/usr/local/keepalived/etc/rc.d/init.d

[root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@server1 init.d]#  ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

[root@server1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

[root@server1 sbin]# ln -s /usr/local/keepalived/sbin/keepalived  /sbin/

[root@server1 bin]# /etc/init.d/keepalived status

keepalived is stopped

[root@server1 bin]# cd ..

[root@server1 keepalived]# cd ..

[root@server1 local]# scp -r keepalived/ 172.25.30.2:/usr/local

 

 

另一台主机和那个无需编译,只需要将安装包解压后,从server1上传过来即可。

[root@server2 ~]# tar zxf keepalived-1.2.20.tar.gz

[root@server2 ~]# cd /usr/local

[root@server2 local]# ls

bin  etc  games  include  keepalived  lib  lib64  libexec  sbin  share  src

[root@server2 local]# cd 

[root@server2 ~]#  ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@server2 ~]#  ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

[root@server2 ~]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

[root@server2 ~]# ln -s /usr/local/keepalived/sbin/keepalived  /sbin/

[root@server2 ~]# /etc/init.d/keepalived status

keepalived is stopped

[root@server1 keepalived]# cd /etc/keepalived/

[root@server1 keepalived]# ls

keepalived.conf  samples

[root@server1 keepalived]# vim keepalived.conf 


[root@server1 keepalived]# scp keepalived.conf 172.25.30.2:/etc/keepalived/

此时,在real_server上分别安装httpd 并且打开它,再分别在server4,server5的默认测试界面写上server4,server5.

[root@server4 ~]# yum install httpd -y

[root@server4 ~]# /etc/init.d/httpd start

Starting httpd: 

[root@server4 ~]# ip addr add 172.25.30.100 dev eth0

[root@server4 ~]# ip addr show

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:c2:bc:60 brd ff:ff:ff:ff:ff:ff

    inet 172.25.30.4/24 brd 172.25.30.255 scope global eth0

    inet 172.25.30.100/32 scope global eth0

    inet6 fe80::5054:ff:fec2:bc60/64 scope link 

       valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN ql

[root@server4 ~]# yum install arptables_jf -y

[root@server4 ~]#  arptables -A IN -d 172.25.30.100 -j DROP

[root@server4 ~]# arptables -A OUT -s 172.25.30.100 -j mangle --mangle-ip-s 172.25.30.4

[root@server4 ~]# /etc/init.d/arptables_jf save

Saving current rules to /etc/sysconfig/arptables:          [  OK  ]

[root@server4 ~]# /etc/init.d/arptables_jf start

Flushing all current rules and user defined chains:        [  OK  ]

Clearing all current rules and user defined chains:        [  OK  ]

Applying arptables firewall rules:                         [  OK  ]

[root@server4 ~]# arptables -nL

Chain IN (policy ACCEPT)

target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        pro       

DROP       0.0.0.0/0            172.25.30.100        00/00              00/00              any    0000/0000  0000/0000  0000/0000 

 

Chain OUT (policy ACCEPT)

target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        pro       

mangle     172.25.30.100        0.0.0.0/0            00/00              00/00              any    0000/0000  0000/0000  0000/0000 --mangle-ip-s 172.25.30.4 

 

Chain FORWARD (policy ACCEPT)

target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        pro       

 

[root@server4 ~]# cd /var/www/html/

[root@server4 html]# ls

[root@server4 html]# vim index.html

Server4

[root@server1 keepalived]# /etc/init.d/keepalived start

Starting keepalived:                                       [  OK  ]


 

       这种情况下需要检查配置文件,如果确定配置文件没有错误时,应该查看是不是端口冲突了,此时可以重启一下rpcbind,因为rpcbind中有很多接口时随机的,重启以下,可能就改善接口冲突的问题。

[root@server1 keepalived]# /etc/init.d/keepalived stop

Stopping keepalived:                                       [  OK  ]

[root@server1 keepalived]# /etc/init.d/rpcbind restart 

Stopping rpcbind:                                          [  OK  ]

Starting rpcbind:                                          [  OK  ]

[root@server1 keepalived]# /etc/init.d/keepalived start 

Starting keepalived:                                       [  OK  ]

[root@server1 keepalived]# ip addr show

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:a0:04:b3 brd ff:ff:ff:ff:ff:ff

    inet 172.25.30.1/24 brd 172.25.30.255 scope global eth0

    inet 172.25.30.100/32 scope global eth0

    inet6 fe80::5054:ff:fea0:4b3/64 scope link 

       valid_lft forever preferred_lft forever

[root@server1 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.30.100:http rr

  -> server5.example.com:http     Route   1      0          5    

 

[root@server2 keepalived]# yum install -y mailx


[root@server2 keepalived]# vim keepalived.con


[root@server2 keepalived]# /etc/init.d/keepalived start

Starting keepalived:                                       [  OK  ]

[root@server1 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.30.100:http rr

  -> server4.example.com:http     Route   1      0          3         

  -> server5.example.com:http     Route   1      0          5         

You have new mail in /var/spool/mail/root


此时,用浏览器访问VIP172.25.30.100,会看到server4server5 轮叫:

当server4或者server5上的httpd被关闭或者坏掉时,比如server4上的httpd关掉,浏览器上就只显示server5上的默认测试界面。




 而,当停掉server1的keepalived时,server2自动接管master,此时会有邮件通知,但是用户在浏览器上访问时,依然是server4和server5轮叫,并没有影响。

[root@server1 keepalived]# /etc/init.d/keepalived stop

Stopping keepalived:                                       [  OK  ]

You have mail in /var/spool/mail/root


[root@server2 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.30.100:http rr

  -> server4.example.com:http     Route   1      0          0         

  -> server5.example.com:http     Route   1      0          0   




Vfstpd:

  现在server4和server5 上安装vsftpd ,并开启他。

[root@server4 html]# yum install vsftpd -y

[root@server4 html]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@server4 html]# cd /var/ftp

[root@server4 ftp]# touch server4

 

[root@server5 html]# yum install vsftpd -y

[root@server5 html]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@server5 html]# touch /var/ftp/server5

 

此时在keepalived的配置文件中添加vsftpd和他的端口。

[root@server4 html]# yum install vsftpd -y

[root@server4 html]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@server4 html]# cd /var/ftp

[root@server4 ftp]# touch server4

 

[root@server5 html]# yum install vsftpd -y

[root@server5 html]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@server5 html]# touch /var/ftp/server5

 

[root@server1 keepalived]# vim keepalived.conf 

[root@server2 keepalived]# /etc/init.d/keepalived restart

Stopping keepalived:                                       [  OK  ]

Starting keepalived:                                       [  OK  ]

测试:

[root@foundation30 mnt]# lftp 172.25.30.100


[root@server1 keepalived]# mail



[root@server1 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.30.100:ftp rr persistent 50

  -> server4.example.com:ftp      Route   1      0          0         

  -> server5.example.com:ftp      Route   1      0          0         

TCP  172.25.30.100:http rr

  -> server4.example.com:http     Route   1      0          0         

  -> server5.example.com:http     Route   1      0          0   

加n是为了不要解析。

[root@server1 keepalived]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.30.100:21 rr persistent 50

  -> 172.25.30.4:21               Route   1      0          0         

  -> 172.25.30.5:21               Route   1      0          0         

TCP  172.25.30.100:80 rr

  -> 172.25.30.4:80               Route   1      0          0         

  -> 172.25.30.5:80               Route   1      0          0         

You have mail in /var/spool/mail/root

 

[root@server2 keepalived]# mail







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值