提示:以下是本篇文章正文内容,下面案例可供参考
1.配置一个母盘
本次实验用的是红帽7.6系统,首先准备一个7.6版本的系统镜像,将这个系统先安装成一个虚拟机。
配置ip
systemctl restart network
配置repo
配置完仓库就可以安装一些必要的软件了
比如vim,http之类的
之后就是一些配置
关火墙,网络管理器
systemctl disable --now firewalld
systemctl disable --now NetworkManage
回到真机中,先安装一个清盘工具
dnf install libguestfs-tools-c.x86_64
安后做清盘操作
后面的shy是前面创建的母盘名称
之后需要可以对母盘压缩,但是空间不够也可以不压缩,如下显示为空间不够提示,这时候就不要压缩了
利用母盘生成三个虚拟机
完事后
首先先来配置下ip
由于之前母盘中基本都写差不多了
进入ifcfg文件中稍作修改即可
server1:172.25.254.101
server2:172.25.254.102
server2:172.25.254.103
本节实验实现的是通过直接路由实现虚拟服务器(VS/DR)
我们将server1设定为DR
将server2和server3设定为VS
那么在server1中
首先我们需要安装ipvsadm
‘yum install -y ipvsadm’
然后做一个vip
‘ip addr add 172.25.254.180/24 dev eth0’
在server2中
安装开启apache服务
yum install httpd
systemctl start httpd
书写一个默认发布文件以便测试
设定vip
ip addr add 172.25.254.180 dev eth0
server3的设定与此一致,只需要将对应的数字稍作修改即可
此时设定的状态ip负载可以分配成功,但不会返回
此时我们需要去做RS的设置
这里我们介绍arptables的方法
使用之前分别在server2和server3安装arptables
下面还是先以2为例演示操作
yum install -y arptables
安装完成后,开始相应的配置
1.书写策略文件,隐藏172.25.254.180
arptables -A IN -d
arptables -A OUTPUT -s 172.25.254.180 -j mangle --mangle-ip-s 172.25.254.102
查看一下策略文件是否添加上了
2.保存策略文件
arptables-save > /etc/sysconfig/arptables
这步可以防止重启后策略丢失
删除策略的操作
arptables -D INPUT -j DROP -d 172.25.254.180
3.设定vip
ip addr add 172.25.254.180/32 dev eth0
然后如法炮制,对server进行设定,就是将server中的ip用户位改为server3的用户位值就可以了。
对应大致步骤大致如下
下面就是测试环节
打开真实主机
访问172.25.254.180
可以看到实现了负载均衡
在负载均衡已经实现的前提下
不难发现其中问题所在
在本次实验中
如果server2挂掉了,那么将会有一半的用户出现访问被拒的现象,这很显然是不应该出现的一件事
那么我们要做的首要的一件事就是
健康监测
其次就是LVS出现故障挂掉了,那么server2,server3就全都不能再正常工作,也是不能出现的状况,所以我们要做的第二件事情就是保证有备选项来接手工作,这就是我们需要做的第二件事
主备冗余
那么知道的问题所在,就要开始解决问题了
关掉server2的http服务,相当于server2挂掉了
systemctl stop httpd.service
打开真机
curl 172.25.254.180
可以看到分配到server2上的用户都被拒掉了
针对这个
下面首先来看健康监测的实现
为了使测试的效果更加直观
我们做如下步骤
我们首先也再server1中写一个默认发布文件
yum install http -y
systemctl start httpd.service
echo server1 > /var/www/html/index.html
清空上个实验的数据
删掉vip
ip addr del 172.25.254.180/24 dev eth0
删掉手动添加的真实ip,即server2和server3的记录
ipvsadm -C
删除完成后可以看到vip没了
打开server1
安装keepalived
yum install keepalived -y
然后对配置文件进行编辑
cd /etc/keepalived/
vim keepalived.conf
文件中的内容全部如下,可以直接复制粘贴(前面的数字为序号,不是配置文件内容)
配置文件主要内容就是第一部分的邮件发送的配置,用于提示出错时的信息。
主DR的设置,优先级的设置,然后设置虚拟ip就是前面不断提到的vip,以及真实主机的ip设定,即本次实验中的server2和server3。
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email {
5 root@localhost
6 }
7 notification_email_from keepalived@localhost
8 smtp_server 127.0.0.1
9 smtp_connect_timeout 30
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 # vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state MASTER
19 interface eth0
20 virtual_router_id 51
21 priority 100
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26 }
27 virtual_ipaddress {
28 172.25.254.180
29 }
30 }
31
32 virtual_server 172.25.254.180 80 {
33 delay_loop 6
34 lb_algo rr
35 lb_kind DR
36 # persistence_timeout 50
37 protocol TCP
38
39 real_server 172.25.254.102 80 {
40 weight 1
41 TCP_CHECK {
42 connect_timeout 3
43 delay_before_retry 3
44 }
45 }
46 real_server 172.25.254.103 80 {
47 weight 1
48 TCP_CHECK {
49 connect_timeout 3
50 delay_before_retry 3
51 }
52 }
53 }
此时健康监测的部分就完成了
那么还有一个需要解决的问题就是前面提到的server1挂掉的问题,即做主备冗余。
那么就新开一个server4,作为server1的辅助DR
先用第一节中提到的母盘生成虚拟机server4
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b shy.qcow2 server4
生成完server4后开启它
安装ipvsadm 和 keepalived
yum install ipvsadm keepalived -y
然后将server1中配置好的keepalived配置文件复制到server4中
因为文件内容大致相同,我们只需要稍作更改
切换到server1
cd /etc/keepalived/
scp keepalived.conf [email protected]:/etc/keepalived/
将配置文件传输到server4后
切换到server中修改配置文件
只需要更改这两个地方,意思就是将状态设置为辅助DR,优先级50,低于主DR的100即可。
然后再和主DR一样开启服务
systemctl start keepalived.service
开始测试之前可以再做一遍检测工作
server1和server4
ip addr
没有vip
ipvsadm -ln
没有server2和sever3的信息
(为了看到实验效果)
server2和server3
开启apache服务
ip addr
查看,必须有vip
本章实验为172.25.254.180
然后先将server1和server4分别开启keepalived
systemctl start keepalived.service
然后就可以看到server1和server4都自动生成了vip和server2,server3的信息。
测试
在server2中关掉httpd
systemctl stop httpd
在server1中的效果
在真机中访问就会全部由server3承担
这就是健康监测生效,不会出现访问失败的现象
再测试一下主备冗余
停掉server1的keepalived服务,就是停掉主DR
systemctl stop keepalived.service
再回到主机中进行测试
依旧可以正常访问
说明server4,辅助DR生效。