Skip to content

Latest commit

 

History

History
289 lines (221 loc) · 7.71 KB

ansible_deployment.md

File metadata and controls

289 lines (221 loc) · 7.71 KB

目录

RadonDB Ansible 部署

概述

Ansible是一个简单的自动化运维管理工具,基于Python语言实现。radon-ansible是基于Ansible Playbook功能编写的集群自动化部署工具,可以快速部署一套完整的Radon集群。

目前已实现功能如下:

  • 部署集群
  • 启动集群
  • 初始化集群
  • 关闭集群

环境要求

  • ubuntu Server 16.04 LTS 64bit
  • radondb推荐配置:1个radon SQL节点,2个radon存储节点,1个radon计算节点,1台监控机器
  • 一台可连接外网的中控机
  • 机器之间内网互通

准备工作

安装依赖包

在中控机上执行以下命令:

# sudo apt-get -y install git curl sshpass python-pip

创建用户

各主机创建一个ubuntu用户,并设置密码。用户名由inventory.ini中的参数ansible_user指定,部署将在该用户下运行。

# useradd -m -d /home/ubuntu ubuntu

# passwd ubuntu

生成 ssh key

ubuntu用户下,执行以下指令生成ssh密钥,遇到提示直接回车即可。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EDraeJ3YoP5Bv/Wv1z6Mvj5ukuJRYOh/Jyv/ObwhHJ0 ubuntu@mysql
The key's randomart image is:
+---[RSA 2048]----+
|      .          |
|     . o         |
|    + o o        |
|   = B + . . .   |
|  + = = S o E    |
| . o . . o .     |
|  . . . + =oo+   |
|   . . oo+o=Bo+  |
|    . ...+=@X*.. |
+----[SHA256]-----+

下载部署文件

  • ubuntu用户下,从github下载radondb-ansible
# git clone https://github.com/radondb/radondb-ansible.git
  • 或者,从github下载radondb-ansible的release版。
# wget https://github.com/radondb/radondb-ansible/releases/download/0.1.0/radondb-ansible-0.1.0.tar.gz
# tar -xvf radondb-ansible-0.1.0.tar.gz

安装Ansible

radondb-ansible目录下执行以下指令安装Ansible及其依赖程序。

$ cd /home/ubuntu/radondb-ansible
$ sudo pip install -r ./requirements.txt

修改配置文件

radondb-ansible目录下的inventory.ini文件是各种部署配置信息。规划好集群部署计划,配置主机列表和变量。

主机清单:

主机名 含义 其他
radon:master radon主SQL节点 必须配置
radon:slave radon备SQL节点 主备需手动配置
mysql:backend radondb存储节点 至少一个,配置server_id
mysql:backup radondb计算节点 配置server_id
monitor 监控 一个节点

例如:计划192.168.0.25和192.168.0.26作为radondb的存储节点,192.168.0.27作为radondb的计算节点,192.168.0.28作为radondb的SQL节点,192.168.0.29作为监控节点,则其主机清单配置如下:

[radon:children]
master
slave
[master]
192.168.0.28
[slave]

[mysql:children]
backend
backup
###server_id must be defferent
[backend]
192.168.0.25 server_id=19216825
192.168.0.26 server_id=19216826
[backup]
192.168.0.27 server_id=19216827
[monitor]
192.168.0.29

radon主机组配置参数:

变量 含义
deploy_dir radon部署目录
deploy_usr radon部署用户
endpoint radon监听端口
peer_port radon REST API接口
monitor_port 监控metrics监听端口
radon_usr RadonDB用户名
radon_passwd RadonDB密码

roles/radon_common/vars/main.yml中部分参数:

变量 含义
twopc_enable 是否启用分布式事务
max_connections 最大连接数
max_result_size 单个存储节点上最大结果集的大小(单位:字节),0表示无限制。
ddl_timeout DDL超时时间,0表示无限制(ms)
query_timeout 查询超时时间,0表示无限制(ms)
backup_default_engine backup节点默认存储引擎
mode 审计模式;None: 不开启审计;Audit-Read:审计读;Audit-Write:审计写;Audit-Read-Write:审计读和写
expire_hours 审计文件保存时间

mysql主机组配置参数:

变量 含义
deploy_dir mysql部署目录
deploy_usr mysql部署用户
mysql_data_dir mysql data目录
mysqld_exporter_usr mysqld_exporter监控使用用户名
mysqld_exporter_passwd mysqld_exporter监控使用密码
mysqld_exporter_port mysqld_exporter监控端口
max_connections 最大连接数
lower_case_table_names 表名区分大小写
wait_timeout 连接超时时间
long_query_time 慢查询时间
innodb_buffer_pool_size innodb 缓冲池字节大小

monitor主机组配置参数:

变量 含义
prometheus_dir prometheus部署目录
prometheus_port prometheus端口
grafana_dir grafana 部署目录
grafana_port grafana 监听端口
grafana_admin_user grafana 用户名
grafana_admin_password grafana 密码

Global 配置参数:

变量 含义
ansible_python_interpreter 指定python 解释器路径
ansible_user 部署执行用户
group_name 部署用户所属组
exporter_dir exporter部署目录
cluster_name 集群名称
retry_stagger 重试次数
mysql_port mysql端口
mysql_user mysql用户名
mysql_passwd mysql密码
node_exporter_port node_exporter端口
radon_release radon release版本号

下载安装包

在radondb-ansible 目录下执行:

# ansible-playbook -i inventory.ini local_prepare.yml -K

输入sudo密码后开始下载部署需要的radonmysqlprometheusgrafananode_exportermysqld_exporter等安装包。目录如下:

resources/
├── grafana-5.2.3.tar.gz
├── libaio1-0.3.110.deb
├── libaio-dev-0.3.110.deb
├── limits.conf
├── mysqld_exporter
├── node_exporter
├── Percona-Server-5.7.22-22.tar.gz
├── prometheus
├── radon
├── radoncli
└── sysctl.conf

部署集群

在radondb-ansible 目录下执行:

# ansible-playbook -i inventory.ini deploy.yml -k -K

输入ssh和sudo密码后开始执行。

启动集群

在radondb-ansible 目录下执行:

# ansible-playbook -i inventory.ini start.yml -K

输入sudo密码后开始执行。

初始化集群

初次部署并启动radondb集群后,需要执行:

# ansible-playbook -i inventory.ini init.yml -K

初始化包括配置radon集群,配置grafana的数据源,上传dashboards等。此步骤只在初次部署时执行。

测试集群

  • 使用 MySQL 客户端连接测试,3306为radon默认端口,默认用户为usr。

    mysql -u usr -h 192.168.0.28 -P 3306 -p
    
  • 通过浏览器访问监控平台。

    地址:http://192.168.0.29:3000 默认帐号密码是:admin/admin

关闭集群

# ansible-playbook -i inventory.ini stop.yml -K