keepalived高可用群集与lvs群集结合搭建
keepalived双机热备 1:keepalived双机热备,主要是用来提供故障切换,和对节点服务器的健康检查。当故障主机回复之后加入群集 2:keepalived是基于vrrp协议的方式进行热备方式,除了一个主服务器之外可以有多个从服务器,而且每一台从服务器的优先级等级各不相同。 3:工作的时候只有主服务器在工作其他服务器处于冗余状态,只要主服务器一旦发生宕机,从服务器,优先级最高的将接任主服务器的位置,以此类推。当主服务器故障排除之后,将重新夺得控制权 VIP 地址为192.168.1.254 主调度器 从调度器 web1服务器 web2服务器 nfs服务器 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 keepalived的安装与服务控制 在编译安装keepalived之前首先解决安装内核的开发包kernel-devel、openssl-devel、popt-devel以及ipvsadm等支持库,当然ipvsadm是在后续的lvs群集中使用 1)安装支持软件 #yum -y install kernel-devel openssl-devel popt-devel #yum -y install ipvsadm 2)编译安装keepalived #tar zxf /mnt/keepalived-1.2.13.tar.gz -C /usr/src #cd /usr/src/keepalived-1.2.13/ [root@centos1keepalived-1.2.13]#./configure--prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/安装到“/”目录和指定内核路径 #make && make install 3)使用keepalived服务 #chkconfig --add keepalived #chkconfig keepalived on 2.主服务器的配置 #cd /etc/keepalived #cp keepalived.conf keepalived.conf.back #vim keepalived.conf global_defs { router_id LVS_HA_R1//主调度器的名称 } vrrp_instance VI_1 {//定义VRRP热备实例 state MASTER//主调度器的热备状态 interface eth0//承载VIP地址的物理接口 virtual_router_id 1//虚拟路由器的ID号,每个热备组保持一致 priority 100//优先级,数值越大优先级越高 advert_int 1//通告间隔秒数(心跳频率) authentication {//认证信息,每个热备组保持一致 auth_type PASS//认证类型 auth_pass 123456//密码字串 } virtual_ipaddress { 192.168.1.254//指定漂移地址(vip),可以多个 } } 3.启动keepalived服务 #service keepalived start 4.备用服务器的配置 1)路由器的名称和优先级不同,其他都一样 5.测试双击热备功能 1)查看ip地址,发现在主服务器上出现VIP [root@centos1 keepalived]# ip add show dev eth0 或者 ip a inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.254/32 scope global eth0 //自动设置的VIP地址 从服务器的vip查看 1)ping测试。在客户机上ping -t 192.168.1.254,然后禁用主服务器eth0网卡,发现中断了1或2个包即恢复正常,说明,其他服务器已经接替了VIP的地址 2)访问web,主服务器正常的情况下,看到是主服务器的网页,主服务器down掉后就是从服务器的内容,主服务器恢复后看到的还是主服务器的内容 3)查看/var/log/messages日志 从服务器查看将看到:VRRP_Instance(VI_1) Entering BACKUP STATE 主服务器查看将看到:VRRP_Instance(VI_1) Entering MASTER STATE 二、LVS+keepalived高可用群集 1.配置主调度器(lvs负载调度器这一部分可以省略了,完全由keepalived配置完成) 1)全局配置,热备配置(此部分略,保留之前的配置就可以了) #vim /etc/keepalived/keepalived.conf 2)web服务器池的配置 #vim /etc/keepalived/keepalived.conf virtual_server 192.168.1.254 80 {//虚拟服务器地址(vip)、端口 delay_loop 6//健康检查的间隔时间(秒) lb_algo rr//轮询(rr)调度算法 lb_kind DR//直接路由(DR)群集工作模式 ! persistence 60//连接保持时间(秒),若启用请去掉!号 protocol TCP//应用服务采用的是tcp协议 real_server 192.168.1.3 80 {//第一个web节点的地址和端口 wright 1//节点的权重 TCP_CHECK {//健康检查方式(手工添加) connect_port 80 //检查的目标端口 connect_timeout 3 //连接超时(秒) nb_get_retry 3 //重试次数 delay_before_retry 4 //重试间隔(秒) } } rel_server 192.168.1.4 80 { //第二个web节点的地址和端口 ........ } 3)重启keepalived服务 #service keepalived restart 2.配置从调度器(同主服务器,只需将web服务器池的配置添到/etc/keepalived/keepalived.conf中即可) 3.配置web节点服务器(这部分和lvs的DR模式一样了) (1)配置虚拟ip地址 #cd /etc/sysconfig/network-scripts/ #cp ifcfg-lo ifcfg-lo:0 #vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.1.254 NETMASK=255.255.255.255 ONBOOT=yes #ifup lo:0 (2)为本机添加一条路由,将访问vip的数据波限制在本地 #route add -host 192.168.2.254 dev lo:0 (3)调整/proc响应参数 #vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 #sysctl -p重启 /etc/sysctl.conf 配置文件 另一台web服务器相同的配置 4.测试LVS+keepalived高可用群集+lvs 在客户机上访问web http://192.168.1.254 ①首先验证lvs,多次刷新页面认真观察 ②再将主服务器的eth0网卡down掉,看看还能不能访问 查看是否可以访问的到节点服务器网页内容 5:将nfs共享存储服务器的内容都挂载到web服务器中,保证服务对外的统一性 首先对nfs的web网页进行编辑 然后在/etc/exports文件中设置共享资源,另外为root用户分配权限控制 之后重新启动nfs服务和rpcbind两个服务 通过客户端网页进行测试 说明调度器的HA群集是成功的 补充内容:启用邮件通知功能,以便及时了解各web节点的健康状况 1.修改主配置文件 global_defs { router_id LVS_HA_R1 notification_email { root } notification_email_from root root smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_HA_R1 } 2.然后,重启keepalived服务 #service keepalived restart 3.查看邮件,down掉web2 #tail /var/spool/mail/root [root@centos1 ~]# tail /var/spool/mail/root Date: Sun, 16 Apr 2017 09:32:45 +0000 From: root@centos1.benet.com Subject: [LVS_HA_R1] Realserver [192.168.2.4]:80 - DOWN X-Mailer: Keepalived To: root@centos1.benet.com Message-Id: <20170416093245.D1C882009FF@centos1.benet.com> => TCP CHECK failed on service <=