LVS工作在ISO模型中的第四层,由于其工作在第四层,因此,因此与iptables类似,必须工作在内核空间上。因此lvs与iptables一样,是直接工作在内核上,叫ipvs,2.4内核版本以后已经集成了ipvs,因此只需要安装一个管理工具ipvsadm即可。
yum install ipvsadm -y
“通过ipvs模块实现网络地址的改写和封装”
NAT:“通过修改IP地址或者端口”
TUNING:“通过ip地址的再次封装实现”
DR:“通过MAC地址的改写来实现”
特点:
NAT:数据请求和响应都要经过调度器
TUNING:需要在正式服务上绑定公网IP,不受地域的限制
DR:需要和realserver的一块网卡在同一个网络,在内一个realserver上需要绑定VIP
对于实现此项目,前提是实现三种模式的一种,本次我就采用DR模式。
3.1.1 集群拓扑图
3.1.2 节点规划
3.1.3 初始化配置
(1)配置主机名
hostnamectl set-hostname DS
su -l
(…略)
(2)处理防火墙
(…略)
(3)同步时钟源
yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org.
hwclock --systohc
以上步骤全部节点都需要设置
3.2.1 在nfs-ser上配置服务端
(1)安装服务:
yum install -y nfs-utils rpcbind
rpm -qa nfs-utils rpcbind
(2)配置exports文件
[root@localhost data]# cat /etc/exports
/data 192.168.239.0/24(rw,sync)
(3)启动服务
systemctl restart nfs
(4)本地挂载并测试
[root@localhost ~]# mkdir /data
[root@localhost ~]# chown -R nfsnobody:nfsnobody /data
[root@localhost ~]# mount 192.168.239.6:/data /mnt
[root@localhost ~]# cd /data/
[root@localhost data]# ls
index.html redis
[root@localhost data]# touch a
[root@localhost data]# cd /mnt
[root@localhost mnt]# ls
a index.html redis
本地挂载成功
3.2.2 在rs1,rs2上配置nfs客户端
(1)安装软件
yum install -y nfs-utils rpcbind
(2)本地测试
[root@rs2 basic]# showmount -e 192.168.239.6
Export list for 192.168.239.6:
/data 192.168.239.0/24
在rs2上执行相同的操作
我用的是nginx,当然apache也行,毕竟安装起来方便。这里就省略如何安装nginx,apache的话:
yum install httpd -y
然后启动就好了。
3.3.1 挂载网页共享目录
mount -t nfs 192.168.239.6:/data /data/xingyun/basic //这里是web服务器的网页存放的路径,nginx的自己设置,apache的默认在/var/www/html下
[root@rs2 basic]# vim /etc/fstab
192.168.239.6:/data /data/xingyun/basic nfs defaults 0 0
mount -a
在rs2上同样执行以上命令
3.3.2 在nfs服务器上创建测试目录
[root@localhost mnt]# cd /data/
[root@localhost data]# vim index.html
[root@localhost data]# cat index.html
this is a test from 192.168.239.6........
3.4.1 在DS节点上配置LVS负载均衡
(1)配置LVS
绑定浮动IP:
nmcli con mod ens33 +ipv4.addr 192.168.239.200/24
systemctl restart network
ipvsadm -A -t 192.168.239.200:80 -s rr
ipvsadm -a -t 192.168.239.200:80 -r 192.168.239.3:80 -g
ipvsadm -a -t 192.168.239.200:80 -r 192.168.239.5:80 -g
ipvsadm -Ln //查看规则
(2)调整会话保持
ipvsadm --set 1 2 1 //简单点说,便于网页上刷新检测
3.4.2 在rs1,rs2上配置网络,绑定服务IP到回环网卡上
[root@rs2 basic]# cd /etc/sysconfig/network-scripts
[root@rs2 network-scripts]# vim ifcfg-lo:10
DEVICE=lo:10
IPADDR=192.168.239.200
NETMASK=255.255.255.255
ONBOOT=yes
[root@rs2 network-scripts]# systemctl restart network
在rs1上做相同的配置
3.4.3 调整内核参数,关闭arp响应
[root@rs2 network-scripts]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@rs2 network-scripts]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
在rs1上做相同的配置
注:一定要把这个文件中的文件全部清除,再写入命令。我用的安装了mysql的节点做的,之前配置mysql的时候这个文件里面配置了东西,当时没在意结果出现了错误,苦逼的我花了一天半时间,才找到了问题的所在,感动的一批。。。
3.4.4 集群功能测试
使用浮动IP访问,刷新两次
在rs1,rs2上动态打印日志:
由此可见,轮询效果。至此,DR模式全部完成。
4.1.1 安装环境说明
yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org.
hwclock --systohc
wget https://www.keepalived.org/software/keepalived-2.0.12.tar.gz
4.1.2 安装编译
4.1.3 配置规范启动
从解压安装包文件中拷贝启功文件
[root@localhost keepalived]# cd /usr/local/src/keepalived-2.0.12/keepalived/etc
[root@localhost etc]# cp -p init /data/keepalived/etc/
[root@localhost etc]# cp -p init.d /data/keepalived/etc/
配置启动项
[root@localhost etc]# cp /data/keepalived/etc/init.d/keepalived /etc/init.d/
[root@localhost etc]# cp /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost etc]# mkdir /etc/keepalived/
[root@localhost etc]# cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost etc]# cp /data/keepalived/sbin/keepalived /usr/sbin/
4.1.4 启动服务
/etc/init.d/keepalived start
可以看到没有进程,这里我需要澄清一下,以前的keepalived安装好以后,就可以启动,无需配置文件,不知什么时候开始,没有配置文件启动不了,也没有进程。
配置文件:
[root@localhost etc]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.239.200/24 dev ens33 label ens:33:10
}
}
此刻,深夜三点钟,我已经不行了,我不想年纪轻轻脱发。因此,我选择睡觉…
下半部分更新好了,时空穿梭器:https://blog.csdn.net/D_Janrry/article/details/105076626