两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)

这篇具有很好参考价值的文章主要介绍了两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意事项

1.切记percona/percona-xtradb-cluster 的版本要统一,否则可能出现各种各样的问题
2.宿主机要关闭SELINUX。修改文件vi /etc/selinux/config,设置SELINUX为disabled,然后reboot机子

启动创建pxc服务

 两台主机为:

宿主机1:192.168.10.4

宿主机2:192.168.10.6

  • 主节点(在宿主机1上执行)
docker run -d  --net=host -v /home/workspace/aliyun-pxc/data/node1:/var/lib/mysql \
-v /home/workspace/aliyun-pxc/config/node1:/etc/percona-xtradb-cluster.conf.d \
-e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=ALIYUNPXC \
-e XTRABACKUP_PASSWORD=root --name=pxc1  --restart=always \
percona/percona-xtradb-cluster:8.0.30-22.1 --lower_case_table_names=1 \
--wsrep_node_address=192.168.10.4 --bind_address=192.168.10.4
  • 子节点1(在宿主机2上执行)
docker run -d -v /home/workspace/aliyun-pxc/data/node2:/var/lib/mysql  \
-v /home/workspace/aliyun-pxc/config/node2:/etc/percona-xtradb-cluster.conf.d  \
-e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=ALIYUNPXC \
-e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=192.168.10.4  --net=host  \
--name=pxc2 --restart=always   percona/percona-xtradb-cluster:8.0.30-22.1 \
--lower_case_table_names=1 --wsrep_node_address=192.168.10.6 --bind_address=192.168.10.6 

子节点需要将父节点中/home/workspace/aliyun-pxc/data/node1目录下的server-key.pem、server-cert.pem、client-key.pem、client-cert.pem、ca.pem传输到其他子节点,然后重启。

 /home/workspace/aliyun-pxc/config/node*映射目录放my.cnf配置问题,如果无特别需求不创建my.cnf也行,使用默认配置。

机器多的话继续参考子节点1继续进行创建节点。 

创建 haproxy 

  •     haproxy配置文件(分别在所有宿主机的 /home/workspace/haproxy/config目录创建haproxy.cfg)
global
	#工作目录
	chroot /usr/local/etc/haproxy
	#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
	log 127.0.0.1 local5 info
	#守护进程运行
	daemon
 
defaults
	log	global
	mode	http
	#日志格式
	option	httplog
	#日志中不记录负载均衡的心跳检测记录
	option	dontlognull
    #连接超时(毫秒)
	timeout connect 5000
    #客户端超时(毫秒)
	timeout client  50000
	#服务器超时(毫秒)
    timeout server  50000
 
#监控界面	
listen  admin_stats
	#监控界面的访问的IP和端口
	bind  0.0.0.0:8888
	#访问协议
    mode        http
	#URI相对地址
    stats uri   /dbs_monitor
	#统计报告格式
    stats realm     Global\ statistics
	#登陆帐户信息
    stats auth  admin:admin
#数据库负载均衡
listen  proxy-mysql
	#访问的IP和端口(前面ip=0代表任何ip都可访问)
	bind  0.0.0.0:3306
    #网络协议
	mode  tcp
	#负载均衡算法(轮询算法)
	#轮询算法:roundrobin
	#权重算法:static-rr
	#最少连接算法:leastconn
	#请求源IP算法:source 
    balance  roundrobin
	#日志格式
    option  tcplog
	#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
    option  mysql-check user haproxy
    server  NODE1 192.168.10.6:3406 check weight 2 maxconn 2000  
    server  NODE2 192.168.10.4:3406 check weight 1 maxconn 2000     
    option  tcpka


注意:配置文件最后要有一个空行,否则会提示配置文件错误。  

  • 创建haproxy节点1
docker run -d -v /home/workspace/haproxy/config:/usr/local/etc/haproxy \
--privileged --net=host --name haproxy01  --restart=always haproxy:2.3
  •  创建haproxy节点2
docker run -d  -v /home/workspace/haproxy/config:/usr/local/etc/haproxy \
--privileged --net=host --name haproxy02  --restart=always haproxy:2.3

在两台宿主机上安装keepalived

  • 安装 
yum install keepalived
  • 开机自启配置 
systemctl enable keepalived
  •  创建配置文件keepalived.conf(在/etc/keepalived目录下)
vrrp_instance VI_1 {
    state MASTER
#这里是宿主机的网卡,可以通过ip a查看当前自己电脑上用的网卡名是哪个
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
#定义虚拟ip地址,必须要在和haproxy同一个网段
    virtual_ipaddress {
       192.168.10.100
    }
}
 
  • 重启keepalived服务 
service keepalived restart

访问监听页面/连接数据库

http://192.168.10.100:8888/dbs_monitor

连接数据库( ip:192.168.10.100 端口:3306)

测试发现成功了文章来源地址https://www.toymoban.com/news/detail-425980.html

到了这里,关于两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132733901 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《RK3568开发笔记(六):

    2024年02月07日
    浏览(63)
  • 配置Docker OpenWrt与宿主机网络互通且作为宿主机网关

    最近需要用Docker版的Openwrt作为旁路由(网关),在配置过程中遇到一些问题,通过查阅资料,最终完美解决。现在将整体方案和具体操作步骤贴到这里分享给大家 这里我使用的环境如下: 宿主机操作系统:Armbian 宿主机ip:192.168.5.2 宿主机新macvlan接口ip:192.168.5.3 Docker镜像:

    2024年02月03日
    浏览(98)
  • 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本

    我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作。 注意: 要先安装 sshpass命令才行。 Dockerfile文件可以在你部署容器的时候自动安装。 docker部署springboot项目

    2024年02月11日
    浏览(63)
  • Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面

    【Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面 - 知乎 答:在宿主机里面执行以下命令 docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为webnphp,要从容器里面拷贝的文件路为: 现在要将tox.ini从容器里面拷到宿主

    2024年02月06日
    浏览(62)
  • docker使用宿主机代理

    我是在ubuntu虚拟机里面装的docker,尝试过docker里面装clash,但是失败了。使用上面的方法,docker容器内可以ping通github.com。ALL_PROXY里面的端口号因人而异。 docker 容器内使用宿主机的代理配置 | Zach Ke\\\'s Notes (kebingzao.com)

    2024年02月16日
    浏览(61)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(43)
  • docker run --privileged参数(容器权限全开,不利于宿主机安全,宿主机容易重启)(与/usr/sbin/init共用)

    我在搞docker自动部署的时候,加了个 --privileged 参数,结果容器一创建,宿主机就重启了 参考网友们对–privileged参数的理解: --privileged ,权限全开,不利于宿主机安全 参考文章:docker容器权限设置–cap-add | --cap-drop | privileged 1.对外开放无认证的Docker API是非常危险的行为,

    2024年02月11日
    浏览(57)
  • Docker容器内执行宿主机指令

            最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。这时候需要添加容器一些特殊的权限和执行一些特殊的命令就可以执行宿主机上面的指令

    2024年02月09日
    浏览(56)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(50)
  • docker与宿主机共享内存通信

    docker中的进程要与宿主机使用共享内存通信,需要在启动容器的时候指定 “–ipc=host” 选项。然后再编写相应的共享内存的程序,一个跑在宿主机上,另一个跑在docker上面。 shm_data.h shm_slave.c makefile shm_data.h shm_master.c makefile Dockerfile 运行时需要先下载docker,获取支持c语言编译

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包