用 Keepalived 实现 Proxysql Cluster 高可用

本文是使用《ProxySQL 代理 MariaDB 实现读写分离和负载均衡》的补充,主要记录 proxysql 集群和 keepalived 的配置。配置中的参数参考:https://www.cnblogs.com/kevingrace/p/10411457.html

实验环境:

  • proxysql-node-1(192.168.0.6)
  • proxysql-node-2(192.168.0.9)

proxysql cluster 配置

编辑/etc/proxysql.cnf配置文件,添加修改以下信息:

  1. admin_variables=
  2. {
  3. admin_credentials="admin:admin;cluster:123456"
  4. # mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock"
  5. mysql_ifaces="0.0.0.0:6032"
  6. # refresh_interval=2000
  7. # debug=true
  8. cluster_username="cluster"
  9. cluster_password="123456"
  10. cluster_check_interval_ms=200
  11. cluster_check_status_frequency=100
  12. cluster_mysql_query_rules_save_to_disk=true
  13. cluster_mysql_servers_save_to_disk=true
  14. cluster_mysql_users_save_to_disk=true
  15. cluster_proxysql_servers_save_to_disk=true
  16. cluster_mysql_query_rules_diffs_before_sync=3
  17. cluster_mysql_servers_diffs_before_sync=3
  18. cluster_mysql_users_diffs_before_sync=3
  19. cluster_proxysql_servers_diffs_before_sync=3
  20. }
  21. proxysql_servers=
  22. (
  23. {
  24. hostname="192.168.0.6"
  25. port=6032
  26. weight=1
  27. comment="ProxySQL-node-1"
  28. },
  29. {
  30. hostname="192.168.0.9"
  31. port=6032
  32. weight=1
  33. comment="ProxySQL-node-2"
  34. }
  35. )

查看配置:

  1. mysql> select * from proxysql_servers;
  2. +-------------+------+--------+-----------------+
  3. | hostname | port | weight | comment |
  4. +-------------+------+--------+-----------------+
  5. | 192.168.0.6 | 6032 | 1 | ProxySQL-node-1 |
  6. | 192.168.0.9 | 6032 | 1 | ProxySQL-node-2 |
  7. +-------------+------+--------+-----------------+
  1. select * from stats_proxysql_servers_checksums;
  1. mysql> select * from stats_proxysql_servers_metrics;
  2. +-------------+------+--------+-----------------+------------------+----------+---------------+---------+------------------------------+----------------------------+
  3. | hostname | port | weight | comment | response_time_ms | Uptime_s | last_check_ms | Queries | Client_Connections_connected | Client_Connections_created |
  4. +-------------+------+--------+-----------------+------------------+----------+---------------+---------+------------------------------+----------------------------+
  5. | 192.168.0.9 | 6032 | 1 | ProxySQL-node-2 | 4 | 161 | 9861 | 0 | 0 | 0 |
  6. | 192.168.0.6 | 6032 | 1 | ProxySQL-node-1 | 3 | 161 | 14986 | 0 | 0 | 0 |
  7. +-------------+------+--------+-----------------+------------------+----------+---------------+---------+------------------------------+----------------------------+
  8. 2 rows in set (0.00 sec)

配置 keepalived

安装keepalived

  1. yum -y install curl gcc openssl-devel libnl3-devel net-snmp-devel
  2. cd /usr/local/src/
  3. wget https://www.keepalived.org/software/keepalived-2.0.18.tar.gz
  4. tar zxvf keepalived-2.0.18.tar.gz
  5. cd keepalived-2.0.18/
  6. ./configure --prefix=/usr/local/keepalived
  7. make && make install
  8. #复制启动和配置文件到相应的目录
  9. cp keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
  10. cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  11. mkdir /etc/keepalived/
  12. ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

创建一个检测proxysql的检测脚本:

  1. vim /etc/keepalived/check_proxysql.sh
  2. #!/bin/bash
  3. /usr/bin/netstat -na | grep -e '0.0.0.0:6033' -e '0.0.0.0:6032' &>/dev/null

proxysql-node-1(192.168.0.6)配置

  1. vim /etc/keepalived/keepalived.conf
  1. # Keepalive Config for ProxySQL Master
  2. global_defs {
  3. # 运行Keepalived机器的一个标识
  4. router_id PROXYSQL_HA
  5. script_user root
  6. enable_script_security
  7. }
  8. vrrp_script chk_proxysql_port {
  9. # 检测MySQL是否存活的脚本
  10. script "/etc/keepalived/check_proxysql.sh"
  11. # 脚本执行间隔,每1s检测一次
  12. interval 1
  13. # 脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级减50
  14. weight -50
  15. #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
  16. fall 2
  17. #检测2次成功就算成功。但不修改优先级
  18. rise 2
  19. }
  20. vrrp_instance VI_1 {
  21. # 设置一个节点标识,并无实际作用。
  22. state MASTER
  23. # 指定虚拟ip的网卡接口
  24. interface ens33
  25. # 发送多播包的地址,设为本机网卡地址
  26. mcast_src_ip 192.168.0.6
  27. # VRRP组名,两个节点必须一致,以指明各节点同属一VRRP组
  28. virtual_router_id 50
  29. # 数字越大,优先级越高,在同一个vrrp_instance下,MASTER优先级必须大于BACKUP优先级。
  30. # 这样MASTER故障恢复后,就可以将VIP资源再次抢回来。
  31. priority 100
  32. # 播信息发送间隔,两个节点需一致
  33. advert_int 1
  34. # 认证方式和密码
  35. authentication {
  36. auth_type PASS
  37. auth_pass 1qaz2wsx
  38. }
  39. # 设置虚拟IP,两个节点需设置一样
  40. virtual_ipaddress {
  41. 192.168.0.20
  42. }
  43. track_script {
  44. chk_proxysql_port
  45. }
  46. }

proxysql-node-2(192.168.0.9)配置

  1. vim /etc/keepalived/keepalived.conf
  2. # Keepalive Config for ProxySQL Backup
  3. global_defs {
  4. router_id PROXYSQL_HA
  5. script_user root
  6. enable_script_security
  7. }
  8. vrrp_script chk_proxysql_port {
  9. script "/etc/keepalived/check_proxysql.sh"
  10. interval 1
  11. weight -50
  12. fall 2
  13. rise 2
  14. }
  15. vrrp_instance VI_1 {
  16. state BACKUP
  17. interface ens33
  18. mcast_src_ip 192.168.0.9
  19. virtual_router_id 50
  20. priority 90
  21. advert_int 1
  22. authentication {
  23. auth_type PASS
  24. auth_pass 1qaz2wsx
  25. }
  26. virtual_ipaddress {
  27. 192.168.0.20
  28. }
  29. track_script {
  30. chk_proxysql_port
  31. }
  32. }

启动:

  1. /etc/init.d/keepalived start
免责声明:
1.本站所有内容只做学习和交流使用。 版权归原作者所有。
2.保证站内提供的所有可下载源码资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
3.本站部分内容均收集于网络!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。请联系站长邮箱:admin#ibian.online(#换成@)处理!

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    中间件数据库

    MySQL 高性能中间件 ProxySQL 初步了解和安装

    2025-2-25 9:29:36

    数据库服务器

    CentOS7系统静默安装和配置Oracle 11gR2

    2025-2-24 19:33:27

    0 条回复 A文章作者 M管理员
    有些路很远,走下去会很累。可是,不走,会后悔。
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索