当前位置: 首页 > news >正文

动力 网站建设东莞建网站公司案例

动力 网站建设,东莞建网站公司案例,产品市场推广途径,绵阳手机网站制作Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来有加入VRRP的功 能,VRRP是Virtual Router Redundancy protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就 是为了解决静态路…

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来有加入VRRP的功 能,VRRP是Virtual Router Redundancy protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就 是为了解决静态路由器出现的单点故障问题,它能偶保证网络的不间断、稳定的运行。所有, keepalived一方面具有LVS cluster nodes healthchecks功能,另一方面也具有LVS directors faiover功能。

从实战开始讲解其用法:

项目实战

主机:Rocky8.10 × 4台

192.168.118.130运行HaProxy的负载均衡器Master
192.168.118.129/131提供数据库服务
192.168.118.128运行HaProxy的负载均衡器BackUp

正常情况下:由两台运行HaProxy的服务同时运行Keepalived提供一个虚拟IP为192.168.118.110的服务地址,一个为Master,一个为BackUp。提供数据库服务,并且对访问流量进行负载均衡

异常情况:当Master挂掉的时候,另一台能够接管这个虚拟IP,和另一台上的所有资源,并且继续提供负载均衡的数据库服务。当Master检测到本身的HaProxy服务故障的时候也能资源漂移到BackUp服务器上面

安装mariadb-server

两台我们打算做数据库后端的主机上面安装:yum install mariadb-server -y

mariadb默认应该是没有密码的,启动mariadb之后可以直接登录,如果有则执行以下命令:

mysql -uroot -p$(awk 'password/{print $NF}/' /var/log/mariadb/mariadb.log)

 登录进去之后需改root用户密码,然后创建一个test用户用于负载均衡验证

alter user 'root'@'localhost' identified by '@OPENlab123';
create user 'test'@'%' identified by '@OPENlab123';
grant all on *.* to 'test'@'%';

 我们编辑/etc/my.cnf,为每台数据库服务器定义一个server-id

#131主机的
[mysqld]
server-id=131
#129主机的
[mysqld]
server-id=129

 重启服务:systemctl restart mariadb

安装与配置Haproxy

这一步参考我的上一篇文章:HaProxy源码安装(Rocky8)-CSDN博客

这里我们在配置好系统服务中增加一个启动的指定文件:

ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d/test.conf -c -qExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d/test.conf -p /var/lib/haproxy/haproxy.pid

这里的意思是在启动之前先使用-c检查haproxy.cfg默认配置文件和我们需要配置的test.conf文件。当然你也可以直接修改haproxy.cfg。然后再启动时指定这两个为配置文件

现在我们就可以配置/etc/haproxy/conf.d/test.conf文件了,配置的内容如下:

frontend mysqldbind 192.168.118.130:3306mode tcpdefault_backend MysqlClustersbackend MysqlClustersmode tcpbalance roundrobinserver mysqlServer1 192.168.118.129:3306 check inter 2000 fall 3 rise 5server mysqlServer2 192.168.118.131:3306 check inter 2000 fall 3 rise 5

 前端(本主机)绑定端口为3306,然后再为其配置后端(提供服务的IP地址)。模式为TCP,均衡算法为rr轮询,名称分别为mysqlServer1哈mysqlServer2的IP,间隔2秒进行健康检查,3次没检查到算down机,之后如果5次检查到则重新启用

Keepalived的每台主机都需要配置上面内容,只需要修改前端的bindIP即可

重启haproxy

systemctl restart haproxy

 检查效果:登录master和backup的IP地址加主配置文件(/etc/haproxy/haproxy.cfg中bind 0.0.0.0:端口)中绑定的端口:http://192.168.118.130:9999/haproxy输入在主配置文件中设置的用户和密码

 发现上图多了我们定义的后端mysqlServer1和mysqlServer2(绿色)。表示添加后端能正常添加

 我们使用以下命令检查是否负载均衡:

检查Master(130)是否能正常运行

for ((i=1;i<=4;i++)); do mysql -utest -p@OPENlab123 -h192.168.118.130 -P3306 -e "select @@server_id"; done
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+

检查BackUp(128)是否能正常运行 

[root@localhost ~]# for ((i=1;i<=4;i++)); do mysql -utest -p@OPENlab123 -h192.168.118.128 -P3306 -e "select @@server_id"
; done
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+

安装和配置Keepalived

检查本地有没有keepalived rpm包

[root@localhost ~]# yum list keepalived
Available Packages
keepalived.x86_64                      2.1.5-10.el8_10                       appstream

有则可以直接yum install keepalived -y下载

没有的话:去官网找到Keepalived for Linux自己需要的版本然后上传到Linux主机上面。

tar -zxvf keepalived-2.1.5.tar.gz
mkdir -p /usr/local/keepalived
cd keepalived-2.1.5
./configure  --prefix=/usr/local/keepalived
make && make install

 事先看好自己网卡信息:ip a,我的是ens160

[root@localhost ~]# rpm -ql keepalived
/etc/keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived

...

显然/etc/keepalived/keepalived.conf就是配置文件了,我们将原有的备份下

cp /etc/keepalived/keepalived.conf{,.bak}

 配置内容如下:

! Configuration File for keepalivedglobal_defs {router_id LVS_MASTER
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51#一个组里面的id要一样priority 200advert_int 1authentication {#认证也要一样auth_type PASSauth_pass 1111}virtual_ipaddress {#没有使用的虚拟IP192.168.118.110}
}

复制一份给到backup主机上:

cd /etc/keepalived
scp ./keepalived.conf root@192.168.118.130:$PWD

配置内容:

! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP#名称
}vrrp_instance VI_1 {state BACKUP#模式为备用interface ens160virtual_router_id 51priority 100#优先级要比Master低advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.118.110}
}

然后单开一个进程去监控日志:tail -f /var/log/messages,之后启动keepalived

systemctl start keepalived

 可以看到MASTER和BACKUP的日志是不一样的,master添加了110这个IP,backup移除了这个IP。我们使用下面命令查看网卡的时候,也会发现master多了一个IP192.168.118.110,而backup没有

ip a

我们回过头去修改一下master和backup的haproxy的配置文件,将监听IP改为bind   0.0.0.0:3306,然后重启haproxy就可以正常登录了。

测试与改进

验证一下效果:如果可以通过IP192.168.118.110登录MySQL的话,那么就配置好了

for ((i=1;i<=4;i++)); do mysql -utest -p@OPENlab123 -h192.168.118.110 -P3306 -e "select @@server_id"; done;
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+

 我们试着关掉Master上的keepalived服务此时监控日志看看发生了什么

[root@localhost ~]# systemctl stop keepalived

 如下图所示:上面的是130Master,下图为backup。

 可以看到从keepalived停止的那一刻开始,就会给backup发送将本机的优先级置为0,然后移除本机的VIP,而BackUp主机由于优先级相对变高了,自己接管了VIP

再次测试110这个VIP,依旧可以使用:

C:\Users\31096>ssh root@192.168.118.131
root@192.168.118.131's password:
Activate the web console with: systemctl enable --now cockpit.socketLast failed login: Mon Feb 24 14:21:24 CST 2025 from 192.168.118.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Feb 24 14:04:37 2025 from 192.168.118.1
for ((i=1;i<=4;i++)); do mysql -utest -p@OPENlab123 -h192.168.118.110 -P3306 -e "select @@server_id"; done;
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         129 |
+-------------+
+-------------+
| @@server_id |
+-------------+
|         131 |
+-------------+

但是当我们的本机的haproxy停用的时候,就没法VIP漂移。所以我们还需要针对haproxy的检查,查看其是否正常运行状态

检测一个服务启用状态可以使用:killall -0或者systemctl is-active

这里使用后者(也可以查看3306这个端口是否被监听:netstat -lntup | grep 3306 | wc -l 大于1则活着的)

所以我们需要在keepalived脚本中添加以下内容,两个主机都添加

...
vrrp_script chk_haproxy {script "systemctl is-active haproxy &> /dev/null"interval 2#间隔时间
}
...
vrrp_instance VI_1 {...track_script {chk_haproxy}...
}

然后重新启动:systemctl restart keepalived,即可

这次我们再次先关闭掉Master的haproxy,看日志会怎么输出

 我们发现当Master停止了haproxy的时候,VIP也会漂移到BackUp主机上。这就是我们想要的效果。

本次项目结束,还可以将MySQL设置为主从同步或使用PXC,读者可以自行完成,参考我之前的文章。这里不再赘述

http://www.dtcms.com/a/454100.html

相关文章:

  • Spring WebFlux 原理与实践全解析
  • 网站建设学生作业成品如何做外文网站
  • 中学网站源码展示页网站怎么做排名
  • 江苏省建设工程协会网站外贸网站推广建站
  • 【C++】运算符替代写法全解析
  • 广州建设网站哪家好支付招聘网站怎么做费用
  • 免费扑克网站代码商城网站建设一般需要多少钱
  • kanass入门到实战(10) - 如何做好测试管理?
  • 网站制作呼和浩特12315可以查询营业执照吗
  • 全球主要城市时间对比,实时更新|昼夜区分|时间对比
  • 栈:“后进先出” 的艺术,撑起程序世界的底层骨架
  • JAVA算法练习题day32
  • 网站添加设置着陆页唐山网站优化
  • 做婚纱网站的目的seo的主要工作是什么
  • 上海哪家做网站校园无线网络设计方案
  • 深入解析Doris ZoneMap索引机制
  • (1)SwiftUI基础入门教程
  • wordpress整站搬家教程河池做网站
  • 怎么改版一个网站白酒网站设计
  • windows显示驱动开发-节能与 VSync 控制
  • 安徽省住房和城乡建设厅官方网站网站访问量大
  • 好的平面设计网站有哪些易云巢做营销型网站
  • 从0死磕全栈之Next.js 中的错误处理机制详解(App Router)
  • c语言贪吃蛇游戏开发
  • 360网站seo优化怎么做简单网站
  • 小说网站静态模板设计师设计费一般多少
  • 网站主机要怎么做跨境电商交3980元培训费可信吗
  • Coze源码分析-资源库-编辑知识库-后端源码-流程/技术/总结
  • 哺乳动物双等位基因表达的 “守护者”--解析 MSL2对基因剂量平衡与疾病机制的新启示--文献精读164
  • 阿里云网站建设需要多少钱开发软件公司都有哪些