LVS-DR-MASTER 192.168.253.130 centos7.5
LVS-DR-BACKUP 192.168.253.135 centos7.5
LVS-DR-VIP 192.168.253.100 centos7.5
WEB1-Realserver 192.168.253.178 centos6.5
WEB2-Realserver 192.168.253.179 centos6.5
基本思路如下图(忽略ip)
[root@localhost ~]# yum -y install ipvsadm.x86_64 keepalived.x86_64
[root@localhost ~]# service keepalived start
配置主keepalived:
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived #http://www.keepalived.org/pdf/UserGuide.pdf 官方配置文档
global_defs {
router_id LVS_R1 #标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到,主机和备机上的router_id设置为一致,同一个网络中必须唯一,注意在一个网段里有多个集群的话需要设置成不同的router_id。}
vrrp_instance VI_1 {
state MASTER #指定实例状态,配置为MASTERinterface eth0 #指定实例运行在哪个网络接口上
virtual_router_id 51 #虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样,但是在同一个网络中不可存在同样的virtual_router_id,不要和其他集群重复,如果一个配置文件中配置了多个VRRP实例,各个实例的virtual_router_id也必须区分开来
priority 100 #优先级值设定:MASTER要比BACKUP的值大
advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。
authentication { #认证机制auth_type PASS #默认PASS; 有两种:PASS或AH
auth_pass 1111 #默认1111; 可多位字符串,但仅前8位有效,设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。 }
}
virtual_ipaddress {
192.168.253.100 #虚拟IP,可多个,写法为每行一个}
}virtual_server 192.168.253.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
! persistence_timeout 50 #持久连接超时时间,会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。protocol TCP #指定转发协议类型,有tcp和udp两种。
real_server 192.168.253.178 80 {
weight 1
TCP_CHECK { #使用TCP_CHECK检测RS的使用可用性connect_port 80 #指定连接的RS端口
connect_timeout 3 #指定连接RS超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 192.168.253.179 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}[root@localhost ~]# service keepalived start
正在启动 keepalived: [确定]通过ip命令查看(ifconfig看不到),实际状态为MASTER的主服务器上将为eth0自动添加VIP地址。在主上:
[root@localhost ~]# ip a
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_R2
}vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
! Configuration File for keepalivedglobal_defs {
router_id LVS_R2
}vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.253.100
}
}virtual_server 192.168.253.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
! persistence_timeout 50
protocol TCPreal_server 192.168.253.178 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.253.179 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}[root@localhost ~]# service keepalived start
正在启动 keepalived: [确定]
使用DR模式的时候,节点服务器也需要配置vip地址,并且调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.100
NETMASK=255.255.255.255
ONBOOT=yes[root@localhost ~]# systemctl restart network #重启下网卡
添加VIP本地访问路由(将访问VIP的数据限制正在本地,避免通信紊乱)
[root@localhost network-scripts]# vim /etc/rc.local
/sbin/route add -host 192.168.253.100 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.253.100 dev lo:0
修改内核参数
[root@localhost network-scripts]# 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#注意:
arp_announce为2时:只向该网卡回应与该网段匹配的ARP报文。
arp_ignore为1:只响应目的IP地址为接收网卡上的本地地址的arp请求
其主要是实现禁止响应ARP的请求。
[root@localhost network-scripts]# sysctl -p #检测参数是否写错
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /var/www/html/index.htmlwelcome to web1!
[root@localhost ~]# systemctl start httpd
#web2跟上面操作一样
在外面直接访问虚拟ip地址,则可以访问到对应节点上的网站信息,当主调度器坏掉的时候,会自动切换到备用的调度器上面,网站访问量根据权重和算法来计算。
查看负载分配情况可以执行下面命令
这时候我们的部署就完成了.