一、VS/DR通过直接路由实现虚拟服务器
LVS/DR模式:
VS/DR 利用大多数 Internet 服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB 相连。VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把 VIP 地址配置在各自的NonARP 网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。
操作开始前,保持一个干净的环境.
一.修改server1的yum源(文件在挂载后的目录中)
2)给server1绑定虚拟网卡;真实ip为172.25.0.116/24
ip addr add 172.25.0.100/24 dev eth0添加VIP网卡
3)加载rule并保存:
ipvsadm -A -t 172.25.0.100:80 -s rr ##添加虚拟主机 -A 添加服务 rr 调度算法
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.117 -g ## -t 表示 tcp协议 -g 表示直连模式
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.118 -g ##添加到同一个局域网
添加错误用ipvsadm -C 清除
5)server2/3 添加IP ip addr add 172.25.254.100/32 dev eth0
6)在上面的基础上 将server2和server3的100全部不对外访问 用arptables_jf规则实现
保存策略并重启服务
7)curl 172.25.0.100真机测试查看通过server1调度器实现访问server2和server3轮询
所用的MARK地址与调度器的Mark相同,所以实现了轮询
在网页进行测试每刷新一次就会发生轮询
二.如何实现健康检查
1)server1安装ldiretord服务
2)复制配置文件到指定目录cp /usr/share/doc/ldirectord版本号/ldirectord.cf /etc/ha.d/
3)更改配置文件 ldirectord.cf
4)将server2或者server3的apache服务停止1个,在真机测试的时候不会进行轮询,为了清楚访问效果,编写server1的http文件
关闭Varnish打开http。
7)在真机测试已经有了健康维护
三:通过keepalived实现健康检查和高可用(高可用集群和负载均衡集群)
keepalived同样可以对lvs后端主机实现健康检查,同样也可以实现调度器高可用,架设多个keepalived可以实现高可用。
应该注意的是ldirectord和keepalived只能开启一个,开启两个会冲突。实验前关闭ldirectord
1)安装keepalived软件防止调度器出现错误导致整个系统崩溃
tar解压 源码编译./configure --prefix=/usr/local/keepalived --with-init=SYSV
在./configure时会报错,要求安装依赖性服务,按要求安装没有的服务即可
yum install openssl openssl-devel iptables-devel libnfnetlink-devel
然后编译
2)为了方便调用,我们建立四个连接,并赋予执行权限,并把这个文件直接发送给之后高可用要使用的server4
3)编辑/etc/keepalived/keepalived.conf配置文件,并将之前添加的虚拟ip移除,因为一会会自动生成;
ip addr del 172.25.0.100/24 dev eth0
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#注释掉 vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100 ##权重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.0.116
}
}
virtual_server 172.25.0.116 80 {
delay_loop 6
lb_algo rr
lb_kind DR ##DR
# persistence_timeout 50 ##注释
protocol TCP
real_server 172.25.0.117 90 80 {
weight 1
TCP_CHECH{
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.0.118 80 {
weight 1
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
开启keepalived服务。/etc/init.d/keepalived start
4)新建子镜像(快照)虚拟机server4.并将server1的配置文件复制给server4。
qemu-img create -f qcow2 -b base.qcow2 server4
scp -r /usr/local/keepalived/ root@172.25.0.119:/usr/local/
scp -r /etc/keepalived/keeplived.conf /etc/keepalived/
在sever4主机中:
(1)安装ipvsadm服务。
yum install ipvsadm
(2)配置keepalived服务。
同样先生成相同的软链接:
然后再修改keepalived配置文件:
server1作为MASTER(优先级设为100),server4作为BACKUP(优先级设为50)
状态为备用 BACKUP 优先级 50
3)开启服务
/etc/init.d/keepalived start
测试:当server1的keepalived服务关闭
此时,server4会接管server1的 调动器的工作。