60. MySQL高可用之 Consul 实战
目录
文章目录隐藏
上两小节我们介绍了 MGR 和 ProxySQL 的部署,接下来我们继续从实战角度,学习这套高可用架构的最后部分:Consul 实战。
1. Consul 介绍
Consul 是 HashiCorp 公司推出的一个用于实现分布式系统的服务发现与配置工具。Consul 使用 Go 语言编写,具有天然可移植性,支持多平台部署,安装包仅仅是一个可执行文件,部署非常简单。
Consul 内置了服务注册与发现、分布一致性协议实现、dns 解析、健康检查、Key/Value 存储、多数据中心方案。
2. Consul 部署
下面从实战的角度一步步搭建 Consul 环境。
2.1 基本环境
Consul-1 | Consul-2 | Consul-3 | |
---|---|---|---|
MySQL 版本 | Consul_1.8.4 | Consul_1.8.4 | Consul_1.8.4 |
操作系统 | CentOS 7.8 | CentOS 7.8 | CentOS 7.8 |
服务器 IP | 192.168.0.1 | 192.168.0.2 | 192.168.0.3 |
端口 | 8600 | 8600 | 8600 |
服务器配置 | 2c4g | 2c4g | 2c4g |
2.2 安装配置
创建日志文件和配置文件:
--consul 日志 sudo touch /consul/log/consul.log --Consul 配置 sudo touch /consul/consul.d/consul_config.json --服务注册 sudo touch /consul/consul.d/proxysql.json
安装 Consul:
--解压缩即可 cd /consul unzip consul_1.8.4_linux_amd64.zip --创建软链接 ln -s /consul/consul /usr/bin/consul --查看版本 consul --version Consul v1.8.4
2.3 Consul 配置-Server 端
全局配置-consul_config.json:
vi /consul/consul.d/consul_config.json { "datacenter":"datacenter-1", "data_dir":"/consul/data", "log_level": "INFO", "node_name": "consul-server-01", "bootstrap_expect": 2, "server": true, // ui 界面在一台 server 设置为 true,其它设置为 false "ui":true, // 如果绑定具体 IP,会导致 consul 集群之间 tcp8301 端口失败 "bind_addr":"0.0.0.0", // 客户端允许访问 ip "client_addr":"0.0.0.0", "enable_script_checks":true, // 加入集群 "start_join": ["192.168.0.1", "192.168.0.2", "192.168.0.3"], "retry_join": ["192.168.0.1", "192.168.0.2", "192.168.0.3"], "ports": {"dns": 53} }
2.4 Consul 配置-Client 端
全局配置-consul_config.json:
/consul/consul.d/consul_config.json { "datacenter":"datacenter-1", "data_dir":"/consul/data", "log_level": "INFO", "node_name": "consul-app-proxysql-01", "server":false, //ui 界面在一台 server 设置为 true,其它设置为 false "ui":false, // 如果绑定具体 IP,会导致 consul 集群之间 tcp8301 端口失败 "bind_addr":"0.0.0.0", // 客户端允许访问 ip "client_addr":"0.0.0.0", "enable_script_checks":true, // 加入集群 "start_join": ["192.168.0.1", "192.168.0.2", "192.168.0.3"]], "retry_join": ["192.168.0.1", "192.168.0.2", "192.168.0.3"]], "ports": {"dns": 53} }
服务注册-proxysql.json:
--采用 mysqladmin 检查 vi /consul/consul.d/proxysql.json { "service": { "id": "proxysql-01", "name": "proxysql", "tags": ["6033-rw-app"], "address": "192.168.0.1", "port": 6033, "check": { "script": "mysqladmin ping --host=localhost --port=6033 --user=root --password=123456", "interval": "3s" } } } --采用 telnet 检查 vi /consul/consul.d/proxysql.json { "service": { "id": "proxysql1", "name": "proxysql", "tags": ["6033-rw-app"], "address": "192.168.0.1", "port": 6033, "check": { "interval": "3s", "tcp": "127.0.0.1:6033", "timeout": "1s" } } }
2.5 DNS 解析配置
--在应用端配置 nameserver,指向 consul 集群 vi /etc/resolv.conf #指向本地 consul 53 端口,正常由本地做 dns 解析 nameserver 127.0.0.1 #指向 consul 集群 53 端口,备用 nameserver 192.168.0.1 nameserver 192.168.0.2 nameserver 192.168.0.3
3. 基础维护
Server 端启动:
consul agent -config-dir=/consul/consul.d/ >> /software/consul/log/consul.log &
Client 端启动:
consul agent -config-dir=/consul/consul.d/ >> /software/consul/log/consul.log &
域名测试:
dig @127.0.0.1 -p 53 proxysql.service.consul dig 6033-rw-app.proxysql.service.consul
退出 Consul:
--consul 命令 consul leave
查看 Consul 集群信息:
--查看 consul 集群信息 consul members
4. 小结
本小节主要从实战角度介绍如何搭建 Consul 环境。
对一个企业级的核心系统来说,数据库架构在设计时必须考虑足够的高可用,这样才能最大程度的确保业务的连续性。MGR+ProxySQL+Consul 的架构三个层面各司其职,确保 MySQL 的高可用:
- Consul:dns 解析、服务发现、健康检查;
- ProxySQL:负载均衡、读写分离、故障发现;
- MGR:单主模式、故障转移、强一致性。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 60. MySQL高可用之 Consul 实战
码云笔记 » 60. MySQL高可用之 Consul 实战