MySQL-MMM的负载均衡及高可用

Jun 07, 2016 pm 05:25 PM
mysql 負荷分散 高可用性

用途mmm是基于信息探测方式进行mysql主从复制架构的监测与故障转移mmm可以做到负载均衡,100%的数据可用性mmm所涉及的检查项服务器可达性,服务可达性,复制线程可

用途
 mmm是基于信息探测方式进行mysql主从复制架构的监测与故障转移
 mmm可以做到负载均衡,100%的数据可用性
 mmm所涉及的检查项   服务器可达性,服务可达性,复制线程可控性

 如图: 当 master1在宕机时, mmm可以将之前分摊的流量进行转移,甚至于将从服务器提升为主

延续双主模型.

wKioL1NT5nvQXXy2AADZ8aMp5QU075.jpg


mmm-agent端状态一览
   online 节点可用
   replication_delay 复制延迟或无法进行(检查req_backlog文件)
   replication_fail 复制失败
   awating_recovery 等待恢复
   hard_offline  主机离线
   admin_offline  主控端离线
   unknown  未知错误

规划如下
172.16.43.200  主控机器负责监测与资源的管理
172.16.43.1  vip(172.16.43.11)  master1 主主复制第一台(可读写)
172.16.43.2  vip(172.16.43.12)  master2 主主复制第二台(只读)
172.16.43.3  vip(172.16.43.13)  slave   主从方式复制 1 , 2 的信息(只读)


实验过程如下

主控安装安装: ansible, mysql客户端, mysql-mmm
集群节点安装如下: mariadb, mysql-agent


i)  主机互信,ansible部署的关键

yum -y install ansible-1.5.4-1.el6.noarch.rpm vim /etc/ansible/hosts # 主控节点完成 [masterserver] master1.king.com master2.king.com . [slaveserver] slave.king.com # 主控节点完成互信多个被管理节点不重复了 ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@slave.king.com . # 主控节点完成安装mysql-mmm* yum -y install mysql mysql-mmm* . # 实现mmm配置文件有两种 # 1. 主控端 mmm_common, mmm_mon # 2. 集群端 mmm_common, mmm_agent # 主控端配置common /etc/mysql-mmm/mmm_common.conf active_master_role writer . cluster_interface eth0 pid_path /var/run/mysql-mmm/mmm_agentd.pid bin_path /usr/sbin replication_user repl replication_password repl agent_user mmm_agent agent_password agent_password . ip 172.16.43.1 mode master peer master2 . ip 172.16.43.2 mode master peer master1 . ip 172.16.43.3 mode slave . # 谁能写 vip是多少(参照本文配置) hosts master1, master2 ips 172.16.43.11 mode exclusive . # 谁能读 vip是多少(参照本文配置) hosts master1, master2 ips 172.16.43.11, 172.16.43.12, 172.16.43.13 mode balanced . # 主控节点完成 vim /etc/mysql-mmm/mmm_mon.conf # 需要改 ping_ips, 把你想监控的集群加入进入就可以了 # 172.16.0.1 是网关ip ping_ips 172.16.0.1, 172.16.43.1, 172.16.43.2, 172.16.43.3 . monitor_user mmm_monitor monitor_password monitor_password

ii) 安装 mariadb, mysql-agent安装与配置

# 编写 install.yaml, 使用ansible-playbook执行按成安装配置 - hosts: masterserver:slaveserver remote_user: root tasks: - name: mariadb install copy: src=/root/mariadb-10.0.10-linux-x86_64.tar.gz dest=/tmp - name: conf service command: tar xf /tmp/mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local ############################################################### # 见谅下面的 name: x , 写了半天才知道不能在一个name中包含多个command,所以.. # ############################################################### - name: 1 command: ln -sv /usr/local/mariadb-10.0.10-linux-x86_64 /usr/local/mysql - name: 2 command: cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld - name: 3 command: chmod +x /etc/rc.d/init.d/mysqld - name: 4 command: mkdir /mydata/data -p - name: 5 command: mkdir /mydata/binlogs -p - name: 6 command: mkdir /mydata/relaylogs -p - name: 7 command: useradd -r -s /sbin/nologin mysql -U - name: 8 command: chown mysql.mysql /mydata -R - name: 9 command: chown mysql.mysql /usr/local/mysql -R - name: 9-1 # 将本地配置好的安装文件移植到集群节点, 解压的配置文件可能不符合要求 copy: src=/usr/local/mysql/scripts/mysql_install_db dest=/usr/local/mysql/scripts/ - name: 10 command: /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data - name: mariadb conf # 此处配置文件 /etc/my.cnf 配置好 # log-bin=/mydata/binlogs/mysql-bin # relay-log=/mydata/relaylogs/relay-bin # datadir=/mydata/data copy: src=/etc/my.cnf dest=/etc/my.cnf notify: - restart mariadb - name: install mysql-mmm-agent yum: name=mysql-mmm-agent state=present - name: conf mysql-mmm-agent copy: src=/etc/mysql-mmm/mmm_common.conf dest=/etc/mysql-mmm - name: modify mmm_agent.conf command: sed -i 's@^\(this[[:space:]]\).*@\1{{ item }}@' /etc/mysql-mmm/mmm_agent.conf with_items: - master1 - master2 - slave - name: 11 command: sed -i 's@^\(ENABLED=\).*@\11@' /etc/default/mysql-mmm-agent handlers: - name: restart mariadb service: name=mysqld state=restarted

wKioL1NT2rTwIXu9AAZvuvT0Nhc295.jpg


不熟yaml的童鞋可以 yaml.org


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

PHPのビッグデータ構造処理スキル

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

Java フレームワークのパフォーマンス最適化における負荷分散戦略の適用 Java フレームワークのパフォーマンス最適化における負荷分散戦略の適用 May 31, 2024 pm 08:02 PM

Java フレームワークのパフォーマンス最適化における負荷分散戦略の適用

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

See all articles