综合项目:LVS+Keepalived+GlusterFS 集群

准备工作:

主机名操作系统IP地址担任角色
masterCentOS7192.168.1.1LVS-主调度器
backup192.168.1.2LVS-备调度器
web1192.168.1.3Web 服务器1,GlusterFS 客户端
web2192.168.1.4Web 服务器2,GlusterFS 客户端
node1192.168.1.5分布式文件系统节点1
node2192.168.1.6分布式文件系统节点2
  • 实验需要的软件包可以从这里进行下载:传送门(需解压)
  • 提取码:d4el

实验描述:

  • 通过 LVS + Keepalived 实现 Web 服务的 负载均衡和高可用;
  • 并且数据存储使用的是 GlusterFS 分布式文件存储,来实现 数据的冗余性;
  • 最终,通过在两台 Web 服务器上 通过 Keepalived 提供的 VIP(192.168.1.188)来提供服务。

1.安装 LVS+Keepalived 服务

1)LVS 主调度器配置

192.168.1.1

[root@master ~]# yum -y install keepalived ipvsadm     						# 安装支持软件
[root@master ~]# systemctl enable keepalived		  				    	# 配置开机自启
[root@master ~]# cat <<END > etc/keepalived/keepalived.conf 
global_defs {
   router_id 1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.188
    }
}
virtual_server 192.168.1.188 80 {
        delay_loop 15
        lb_algo rr
        lb_kind DR
        protocol TCP

real_server 192.168.1.3 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
                real_server 192.168.1.4 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
}
END
[root@master ~]# ipvsadm -C								   					# 删除原有策略
[root@master ~]# modprobe ip_vs			 				     				# 加载系统内核的服务模块
[root@master ~]# lsmod | grep ip_vs							 				# 查看系统模块运行状态
[root@master ~]# echo "modprobe ip_vs" >> /etc/rc.local      				# 配置开机自运行
[root@master ~]# systemctl restart keepalived  				 				# 重启 Keepalived 服务
[root@master ~]# ip a        									 			# 查看漂移 IP 是否存在

在这里插入图片描述

2)LVS 备调度器配置

192.168.1.2

[root@backup ~]# yum -y install keepliaved ipvsadm			 				# 安装支持软件
[root@backup ~]# systemctl enable keepalived				 				# 配置开机自启
[root@backup ~]# cat <<END > etc/keepalived/keepalived.conf 
global_defs {
   router_id 2										# 要和主调度器的配置进行区分
}
vrrp_instance VI_1 {
    state BACKUP									# 备份
    interface ens33
    virtual_router_id 1
    priority 99										# 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.188
    }
}
virtual_server 192.168.1.188 80 {
        delay_loop 15
        lb_algo rr
        lb_kind DR
        protocol TCP

real_server 192.168.1.3 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
                real_server 192.168.1.4 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
}
END
[root@backup ~]# ipvsadm -C					  				 				# 删除原有策略
[root@backup ~]# modprobe ip_vs			    			     				# 加载系统内核的服务模块
[root@backup ~]# lsmod | grep ip_vs			   				 				# 查看系统模块运行状态
[root@backup ~]# echo "modprobe ip_vs" >> /etc/rc.local      				# 配置开机自运行
[root@backup ~]# systemctl restart keepalived				 				# 重启 Keepalived 服务

在这里插入图片描述

2.安装 Apache 服务

两台 Web 服务器配置相同:(也就是 192.168.1.3 192.168.1.4 主机)

[root@web1 ~]# yum -y install httpd					  						# 安装 HTTP 服务
[root@web1 ~]# echo "<h1>This is web1</h1>" > /var/www/html/index.html   	# 配置自定义页面 (两台 HTTP 服务器要区分开)
[root@web1 ~]# systemctl start httpd				  						# 开启 HTTP 服务
[root@web1 ~]# systemctl enable httpd 				  						# 配置开机自启

1)配置集群接口

[root@web1 ~]# cat <<END > /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVEICE=lo:0
ONBOOT=yes
IPADDR=192.168.1.188
NETMASK=255.255.255.255
END
[root@web1 ~]# systemctl restart network
[root@web1 ~]# ifconfig lo:0

在这里插入图片描述
2)调整 /proc 内核参数,关闭 ARP 响应

[root@web1 ~]# cat <<END >> /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
END
[root@web1 ~]# sysctl -p       												# 加载配置

3)添加到群集 IP 地址的本地路由记录

[root@web1 ~]# yum -y install net-tools
[root@web1 ~]# route add -host 192.168.1.188 dev lo:0
[root@web1 ~]# echo "/sbin/route add -host 192.168.1.188 dev lo:0" >> /etc/rc.local     

4)客户机进行验证
在这里插入图片描述
在这里插入图片描述
5)LVS 服务器查看负载均衡情况

[root@master ~]# ipvsadm -ln  

在这里插入图片描述
验证成功后,在两台 HTTP 服务器上将首页进行删除(为后续挂载 GlusterFS 做准备)

[root@web1 ~]# rm -rf /var/www/html/*

3.安装 GlusterFS 服务

  • 分别为 node1 node2 各配置一块 20G 硬盘,分成两个分区,各 10G 容量。

1)磁盘分区(两台主机操作相同)

[root@node1 ~]# parted /dev/sdb                                           
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)  mklabel gpt
(parted)  mkpart primary 1 50%
(parted)  mkpart primary 2 100%
....
Is this still acceptable to you?
/Yes//No? Yes
(parted)  quit
[root@node1 ~]# lsblk | grep sdb
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0   10G  0 part 
└─sdb2            8:18   0   10G  0 part

2)格式化并挂载

node1 上操作:

[root@node1 ~]# mkfs.xfs /dev/sdb1 && mkfs.xfs /dev/sdb2
[root@node1 ~]# mkdir -p /brick1/sdb{1..2}
[root@node1 ~]# mount /dev/sdb1 /brick1/sdb1 && mount /dev/sdb2 /brick1/sdb2
[root@node1 ~]# cat <<END >> /etc/fstab										# 配置开机自挂载
/dev/sdb1 /brick1/sdb1 xfs defaults 0 0
/dev/sdb2 /brick1/sdb2 xfs defaults 0 0
END
[root@node1 ~]# df -hT | grep brick1              							# 查看是否挂载成功

node2 上操作:

[root@node2 ~]# mkfs.xfs /dev/sdb1 && mkfs.xfs /dev/sdb2
[root@node2 ~]# mkdir -p /brick2/sdb{1..2}
[root@node2 ~]# mount /dev/sdb1 /brick2/sdb1 && mount /dev/sdb2 /brick2/sdb2
[root@node2 ~]# cat <<END >> /etc/fstab										# 配置开机自挂载
/dev/sdb1 /brick2/sdb1 xfs defaults 0 0
/dev/sdb2 /brick2/sdb2 xfs defaults 0 0
END
[root@node2 ~]# df -hT | grep brick2              							# 查看是否挂载成功

3)配置 Hosts 文件

node1 node2 操作相同

[root@node1 ~]# cat <<END >> /etc/hosts   
192.168.1.5 node1
192.168.1.6 node2
END

4)配置本地 yum源,安装基础包

node1 node2上操作相同

[root@node1 ~]# yum -y install attr psmisc         							# 安装基础包
[root@node1 ~]# rm -rf /etc/yum.repos.d/*
[root@node1 ~]# cd /mnt/
上传 gfsrepo 文件夹里的软件到此目录
[root@node1 mnt]# cat <<END > /etc/yum.repos.d/GLFS.repo
[GLFS]
name=GLFS
baseurl=file:///mnt
enabled=1
gpgcheck=0
END
[root@node1 mnt]# yum clean all
[root@node1 mnt]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma   
[root@node1 mnt]# systemctl start glusterd         							# 开启 Gluster
[root@node1 mnt]# systemctl enable glusterd		   							# 配置开机自启
[root@node1 mnt]# netstat -anpt | grep glusterd    							# 查看端口是否开启

5)创建集群,并将主机加入集群

node1 node2 上任意一台主机上操作即可

[root@node1 ~]# gluster peer probe node1
[root@node1 ~]# gluster peer probe node2
[root@node1 ~]# gluster peer status     									# 查看节点状态

在这里插入图片描述
6)创建复制卷

创建第一个复制卷:

[root@node1 ~]# gluster volume create rep-web1 replica 2 node1:/brick1/sdb1 node2:/brick2/sdb1 force
[root@node1 ~]# gluster volume start rep-web1       					    # 开启复制卷
[root@node1 ~]# gluster volume info rep-web1								# 查看复制卷状态

在这里插入图片描述
创建第二个复制卷:

[root@node1 ~]# gluster volume create rep-web2 replica 2 node1:/brick1/sdb2 node2:/brick2/sdb2 force      
[root@node1 ~]# gluster volume start rep-web2     							# 开启复制卷
[root@node1 ~]# gluster volume info rep-web2      							# 查看复制卷状态

在这里插入图片描述

4.配置 GlusterFS 客户端

1)Web1,Web2 主机上安装客户端软件:

[root@web1 ~]# echo "192.168.1.5 node1" >> /etc/hosts
[root@web1 ~]# echo "192.168.1.6 node1" >> /etc/hosts
[root@web1 ~]# yum -y install attr psmisc     								# 安装基础包
[root@web1 ~]# rm -rf /etc/yum.repos.d/*
[root@web1 ~]# cd /mnt/   
上传 gfsrepo 文件夹里的软件到此目录
[root@web1 mnt]# cat <<END > /etc/yum.repos.d/GLFS.repo
[GLFS]
name=GLFS
baseurl=file:///mnt
enabled=1
gpgcheck=0
END
[root@web1 mnt]# yum clean all
[root@web1 mnt]# yum -y install glusterfs glusterfs-fuse  

2)挂载 GlusterFS 文件系统

Web1 上操作:

[root@web1 ~]# mount.glusterfs node1:rep-web1 /var/www/html/  
[root@web1 ~]# echo "<h1>This is web1</h1>" > /var/www/html/index.html

Web2 上操作:

[root@web2 ~]# mount.glusterfs node1:rep-web2 /var/www/html/
[root@web2 ~]# echo "<h1>This is web2</h1>" > /var/www/html/index.html

3)在 node1 node2 主机上分别访问挂载目录,查看是否有复制文件存在
在这里插入图片描述

5.验证

1)关闭主调度器,查看整个集群是否能够正常工作
在这里插入图片描述
在这里插入图片描述
2)关闭 Web1 节点,查看整个集群是否能够正常工作
在这里插入图片描述
3)关闭 node1 节点,查看整个集群是否能够正常工作
在这里插入图片描述

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值