[Linux]-构建LVS-DR模式+Keepalived高可用群集
Keepalived
Keepalived是一款高可用软件,它的功能主要包括两方面:
1)通过IP漂移,实现服务的高可用:服务器集群共享一个虚拟IP,同一时间只有一个服务器占有虚拟IP并对外提供服务,若该服务器不可用,则虚拟IP漂移至另一台服务器并对外提供服务;
2)对LVS应用服务层的应用服务器集群进行状态监控:若应用服务器不可用,则keepalived将其从集群中摘除,若应用服务器恢复,则keepalived将其重新加入集群中。
Keepalived可以单独使用,即通过IP漂移实现服务的高可用,也可以结合LVS使用,即一方面通过IP漂移实现LVS负载均衡层的高可用,另一方面实现LVS应用服务层的状态监控,如图所示:
Keepalived
的实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),而VRRP是为了解决静态路由的高可用。
安装步骤大纲
客户端:1.1.1.245/8
主LVS:1.1.1.2/8
从LVS:1.1.1.3/8
web服务器:1.1.1.5/8 lo : 1.1.1.1
web服务器:1.1.1.6/8 lo : 1.1.1.1
一、配置LVS服务器(主-从两台)
配置IP地址
调整响应参数(主从两台服务器都需要配置)
[root@localhost ~]# vim /etc/sysctl.conf
修改
# Controls IP packet forwarding net.ipv4.ip_forward = 1 #开启路由转发功能
添加
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0
保存退出后执行该命令立即生效
[root@localhost ~]# sysctl -p
安装并配置ipvsadm(主从配置一样)
挂载光盘
[root@localhost ~]# rpm -ihv /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm warning: /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:ipvsadm ########################################### [100%]
随后启动ipvsadm服务
service ipvsadm start
添加为系统服务
[root@localhost ~]# chkconfig --add ipvsadm
[root@localhost ~]# chkconfig ipvsadm on
配置Keepalived服务器(两台一样)
先安装Keepalive服务的依赖包(yum),后安装Keepalived软件(本地光盘),主从都有
yum步骤回顾
rm -rf /etc/yum.repos.d/* vim /etc/yum.repo.d/yum.repo # [yum] name=yum install baseurl=file:///mnt/ enabled=1 gpgcheck=0
依赖包安装
yum -y install kernel-devel openssl-devel popt-devel
Keepalived解压制定路径为 -C /usr/src
tar -zxvf keepalived-1.2.13.tar.gz -C /usr/src/ cd /usr/src/keepalived-1.2.13/
执行命令安装
[root@localhost keepalived-1.2.13]# ./configure --prefix=/ --with-kernel- dir=/usr/src/kernels/2.6.32-431.el6.x86_64 make && make install
[root@localhost ~]# /etc/init.d/keepalived start #开启keepalived服务
[root@localhost ~]# netstat -anp | grep keepalived #查看进程
[root@localhost keepalived-1.2.13]# netstat -anp | grep keepalived raw 0 0 0.0.0.0:112 0.0.0.0:* 7 43771/keepalived raw 0 0 0.0.0.0:112 0.0.0.0:* 7 43771/keepalived raw 0 0 0.0.0.0:255 0.0.0.0:* 7 43770/keepalived raw 0 0 0.0.0.0:255 0.0.0.0:* 7 43770/keepalived unix 2 [ ] DGRAM 65282 43768/keepalived
添加为系统服务就可以用service keepalived start | restart | stop 来进行操作
chkconfig --add keepalived
chkconfig keepalived on
!----------------------------------------------------两台一样的操作到此为止--------------------------------------------------!
Keepalived配置文件(主服务器)
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak #备份一份,防止误操作
打开 vim /etc/keepalived/keepalived.conf
更改和删除(dd删除,1000dd删除一千行)
global_defs { router_id R1 #这个路由器的名称 } vrrp_instance VI_1 { #定义VRRP热备实例 state MASTER #热备状态,MASTER表示是主机 interface eth0 #承载VIP地址的物理接口 virtual_router_id 1 #虚拟路由器的ID号,每个热备组保持在一组 priority 100 #优先级,数值越大优先级越高 advert_int 1 #通告间隔秒数(心跳频值) authentication { #认证信息,热备组保持一致 auth_type PASS #认证类型 auth_pass 1111 #密码字串 } virtual_ipaddress { #制定飘逸IP地址(VIP,可以有多个) 1.1.1.1 } } virtual_server 1.1.1.1 80 { delay_loop 15 #检查健康时间 lb_algo rr #定义调度算法 lb_kind DR #定义负载均衡群集的模式 protocol TCP real_server 1.1.1.5 80 { #指定的第一个WEB服务器地址 weight 1 #定义权重值 TCP_CHECK { connect_port 80 #检查目标的端口 connect_timeout 3 #链接超时时间 nb_get_retry 3 #重复次数 delay_before_retry 4 #重试间隔时间 } } real_server 1.1.1.6 80 { #指定的第二个WEB服务器地址 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }
配置完后保存退出,使用 ip a 查看接口转发状态
[root@localhost ~]# ip a 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 00:0c:29:0e:05:36 brd ff:ff:ff:ff:ff:ff inet 1.1.1.2/8 brd 1.255.255.255 scope global eth0 inet 1.1.1.1/32 scope global eth0 inet6 fe80::20c:29ff:fe0e:536/64 scope link valid_lft forever preferred_lft forever
Keepalived配置文件(从服务器)
global_defs { router_id R2 #名称更变 } vrrp_instance VI_1 { state BACKUP #从服务器 interface eth1 #我这个出去的网阿卡是eth1,一般是eth0 virtual_router_id 1 #保持一组 priority 99 #优先级要低于主服务器 advert_int 1 !-----其余于主服务器保持一致------! authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 1.1.1.1 } } virtual_server 1.1.1.1 80 { delay_loop 15 lb_algo rr lb_kind DR protocol TCP real_server 1.1.1.5 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } real_server 1.1.1.6 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }
重启keepalived服务,ip a 查看,没有1.1.1.1漂移IP地址,因为在主服务器上
[root@localhost ~]# ip a 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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:45:59:3b brd ff:ff:ff:ff:ff:ff inet 1.1.1.3/8 brd 1.255.255.255 scope global eth1 inet6 fe80::20c:29ff:fe45:593b/64 scope link valid_lft forever preferred_lft forever
配置Web服务器
配置IP地址
略
设置VIP*
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0 IPADDR=1.1.1.1 NETMASK=255.255.255.255 ONBOOT=yes
添加路由
[root@localhost ~]# route add -host 1.1.1.1 dev lo:0
添加到开机启动项,注意是追加 >>是追加 >是覆盖原有内容
[root@localhost ~]# echo "route add -host 1.1.1.1 dev lo:0" >> /etc/rc.local
调整响应参数
[root@localhost ~]# 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使其生效
配置http服务
Web 1
vim /etc/www/html/index.html <h1>我觉得OK,这里是1</h1><br/> <br/> <h3>1111111111111111</h3>
Web 2
vim /etc/www/html/index.html
<h1>我觉得OK,这里是2</h1><br/>
<br/>
<h3>2222222222222222</h3>
添加为系统服务
[root@localhost ~]# chkconfig --add httpd
[root@localhost ~]# chkconfig httpd on
客户机验证
ping -t 1.1.1.1 会通,当主服务器断掉后会卡一下,延迟几秒,这个时候从服务器会代替主服务器的工作,服务器比开许多台VM的PC性能好很多。
漂移IP会在两个keepalived服务器之间无缝切换,达到不间断提供服务的目的性。
网页访问使用轮询rr算法切换
完成,谢谢观看
---恢复内容结束---