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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 综合项目:LVS+Keepalived+GlusterFS 集群

准备工作:



image.png


  • 实验需要的软件包可以从这里进行下载:传送门(需解压)
  • 提取码: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 是否存在


image.png


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 服务


image.png


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


image.png


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)客户机进行验证


image.png


image.png


5)LVS 服务器查看负载均衡情况


[root@master ~]# ipvsadm -ln  


image.png


验证成功后,在两台 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                       # 查看节点状态


image.png


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                # 查看复制卷状态


image.png


创建第二个复制卷:


[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                    # 查看复制卷状态


image.png


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 主机上分别访问挂载目录,查看是否有复制文件存在


image.png


5.验证



1)关闭主调度器,查看整个集群是否能够正常工作


image.png


image.png


2)关闭 Web1 节点,查看整个集群是否能够正常工作


image.png


3)关闭 node1 节点,查看整个集群是否能够正常工作


image.png



相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
68 8
LVS+Keepalived 负载均衡
|
2月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
61 5
|
3月前
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
63 5
|
3月前
|
存储 负载均衡 算法
使用LVS搭建集群实现负载均衡(一)
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡
134 5
|
3月前
|
负载均衡 监控 算法
在Linux中,如何配置和管理LVS集群?
在Linux中,如何配置和管理LVS集群?
|
6月前
|
弹性计算 负载均衡 网络协议
LVS (Linux Virtual server)集群介绍
LVS (Linux Virtual server)集群介绍
|
6月前
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
117 1
|
6月前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
6月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
207 2
|
6月前
|
负载均衡 算法 Linux
LVS集群
LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。
129 1