调度器的备份
集群(不再是单纯的调度器)
当调度器挂了,客户就彻底不能访问了,这时我们可以设置调度器的高可用
时刻保证调度器的正常工作:设置调度器master(主)和调度器backup(备)
我们在两台调度器上使用keepalived服务就可以将两个调度器关联在一起,keepalived检测两个调度器的工作情况
我们使用keeplived代理LVS,它具有LVS的功能,但同时可以有多个,有主有备
当主调度器挂了备用调度器就去做轮询,当主调度器好了备用调度器就把任务还给主调度器
当主调度器正常的时候,keepalived通知备份调度器自己可以正常工作,不需要接管自己的任务
当主调度器挂了,备份调度器会自动去接管主调度器的工作
这个时候客户端依然可以正常访问,在接管的时候,访问不受影响
搭建DR模式环境
lVS主服务器(server1): 192.168.1.1/24 192.168.1.100/24
修改server1的ip地址,并且添加虚拟ip地址
server2: 192.168.1.2/24 192.168.1.100/32
修改server2的ip地址,并且添加虚拟ip地址
server3: 192.168.1.3/24 192.168.1.100/32
修改server3的ip地址,并且添加虚拟ip地址
lVS备服务器(server2): 192.168.1.4/24 192.168.1.100/24
systemctl stop firewalld
关闭 firewall
setenforce 0
关闭 SELinux
server1
yum install -y ipvsadm
安装 ipvsadm
vim /etc/sysconfig/ipvsadm-config
修改LVS服务的配置文件:no->yes
重启服务的时候保存策略
systemctl start ipvsadm
首次开启会报错,无法开启服务
cat /var/log/messages
在日志里面查看服务启动错误的原因
touch /etc/sysconfig/ipvsadm
建立编写策略的文件
systemctl start ipvsadm
再次开启服务,正常
systemctl enable ipvsadm
开启自启
设置DR模式的访问策略
ipvsadm -A -t 192.168.1.100:80 -s rr
添加vip
-A
:添加虚拟服务器
-t
:指定vip及tcp端口
-s
:指定算法
rr
:轮询
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.2:80 -g -w 1
ipvsadm -a -t 1192.168.1.100:80 -r 192.168.1.3:80 -g -w 1
-a
:添加节点
-t
:指定vip和端口
-r
:指定节点ip及端口
-m
:表示使用NAT模式
-w
:设置权重
ipvsadm -ln
查看当前节点信息
systemctl restart ipvsadm
重启服务
server2
yum install -y http
安装 http
systemctl start httpd
开启
systemctl enable httpd
开机自启
vim /var/www/html/index.html
建立测试页面
server2.example.com
测试页面内容
yum install -y arptables
安装 arptables
arptables -nL
查看策略
设置arptables的访问策略
arptables -A INPUT -d 192.168.1.100 -j DROP
192.168.1.100来源输入全部丢弃
arptables -A OUTPUT -s 192.168.1.100 -j mangle --mangle-ip-s 192.168.1.2
192.168.1.100输出转化为192.168.1.2
cat /etc/sysconfig/arptables
查看规则
arptables-save > /etc/sysconfig/arptables
保存策略
cat /etc/sysconfig/arptables
再次查看,策略已保存
systemctl restart arptables
重启服务
server3
yum install -y http
安装 http
systemctl start httpd
开启
systemctl enable httpd
开机自启
vim /var/www/html/index.html
建立测试页面
server3.example.com
测试页面内容
yum install -y arptables
安装 arptables
arptables -nL
查看策略
设置arptables的访问策略
arptables -A INPUT -d 192.168.1.100 -j DROP
192.168.1.100来源输入全部丢弃
arptables -A OUTPUT -s 192.168.1.100 -j mangle --mangle-ip-s 192.168.1.3
192.168.1.100输出转化为192.168.1.3
cat /etc/sysconfig/arptables
查看规则
arptables-save > /etc/sysconfig/arptables
保存策略
cat /etc/sysconfig/arptables
再次查看,策略已保存
systemctl restart arptables
重启服务
server4
yum install -y ipvsadm
安装 ipvsadm
vim /etc/sysconfig/ipvsadm-config
修改LVS服务的配置文件:no->yes
重启服务的时候保存策略
systemctl start ipvsadm
首次开启会报错,无法开启服务
cat /var/log/messages
在日志里面查看服务启动错误的原因
touch /etc/sysconfig/ipvsadm
建立编写策略的文件
systemctl start ipvsadm
再次开启服务,正常
systemctl enable ipvsadm
开启自启
设置DR模式的访问策略
ipvsadm -A -t 192.168.1.100:80 -s rr
添加vip
-A
:添加虚拟服务器
-t
:指定vip及tcp端口
-s
:指定算法
rr
:轮询
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.2:80 -g -w 1
ipvsadm -a -t 1192.168.1.100:80 -r 192.168.1.3:80 -g -w 1
-a
:添加节点
-t
:指定vip和端口
-r
:指定节点ip及端口
-m
:表示使用NAT模式
-w
:设置权重
ipvsadm -ln
查看当前节点信息
systemctl restart ipvsadm
重启服务
操作流程
server1
tar -zxvf keepalived-*.tar.gz
解压
cd / keepalived-*
yum install -y gcc openssl-devel
需要源码编译
./configure --prefix=/usr/local/keepalived --with-init=systemd
编译
make && make install
安装
ln -s /usr/local/keepalived/etc/keepalived /etc
配置文件做软链接
vim /etc/keepalived/keepalived.conf
编辑配置文件
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict--注释,打开无法正常开启服务
vrrp_garp_interbval 0
vrrp_gna_interval 0
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 30
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_server 192.168.1.100 80 {
delay_loop 3
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.1.100 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
ip addr del 192.168.1.100/24 dev eth0
systemctl restart keepalived
重启
server4
tar -zxvf keepalived-*.tar.gz
解压
cd / keepalived-*
yum install -y gcc openssl-devel
需要源码编译
./configure --prefix=/usr/local/keepalived --with-init=systemd
编译
make && make install
安装
ln -s /usr/local/keepalived/etc/keepalived /etc
配置文件做软链接
server1
scp /etc/keepalived/keepalived.conf root@192.168.1.4:/etc/keepalived
配置文件传输给 server4
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP ---备份
interface eth0 ---网卡
virtual_router_id 30 ---序号
priority 50 ---权重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
}
ip addr del 192.168.1.100/24 dev eth0
systemctl restart keepalived
重启
测试
情况一:
server1(主)与server2(备)同时开启 keepalived 服务
curl 192.168.1.100
访问192.168.1.100可以看到 server2 与 server3 轮流响应请求
server1
ifconfig
eth0 网卡添加 vip 192.168.1.100/24
server2
ifconfig
eth0 网卡没有 vip 192.168.1.100/24
情况二:
server1(备)开启 keepalived 服务,server1(主) 关闭 keepalived 服务
server1
systemctl stop keepalived
curl 192.168.1.100
访问192.168.1.100可以看到 server2 与 server3 轮流响应请求(切换至备用服务器)
server1
ifconfig
eth0 网卡删除 vip 192.168.1.100/24
server2
ifconfig
eth0 网卡添加 vip 192.168.1.100/24
情况三:
server2(备)开启 keepalived 服务,server1(主) 再次开启 keepalived 服务
server1
systemctl restart keepalived
curl 192.168.1.100
访问192.168.1.100可以看到 server2 与 server3 轮流响应请求(切换回主要服务器)
server1
ifconfig
eth0 网卡添加 vip 192.168.1.100/24
server2
ifconfig
eth0 网卡删除 vip 192.168.1.100/24