分布式部署文档 - 数据库 部署

说明

  • 开头的行表示注释

  • $ 开头的行表示需要执行的命令
  • > 开头的行表示需要在数据库中执行

环境

  • 系统: CentOS 7
  • 服务: MariaDB Galera Cluster
    ProtocolServerNameIPPortUsed By
    TCPMariadb-01192.168.100.103306Jumpserver
    TCPMariadb-02192.168.100.113306Jumpserver
    TCPMariadb-03192.168.100.123306Jumpserver

开始安装

  1. # 以下命令需要在三台数据库服务器分别执行
  2. $ yum upgrade -y
  3.  
  4. # 添加 MariaDB 源
  5. $ vi /etc/yum.repos.d/MariaDB.repo
  6. [mariadb]
  7. name = MariaDB
  8. baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64
  9. gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
  10. gpgcheck=1
  11.  
  12. # 安装 MariaDB Galera Cluster
  13. $ yum install -y mariadb mariadb-server mariadb-shared mariadb-common galera rsync
  14.  
  15. # 设置 Firewalld 和 Selinux
  16. $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="tcp" port="3306" accept"
  17. $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="tcp" port="4567" accept"
  18. $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="tcp" port="4568" accept"
  19. $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="tcp" port="4444" accept"
  20. $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="udp" port="4567" accept"
  21. # 192.168.100.0/24 为整个 Jumpserver 网络网段, 这里就偷懒了, 自己根据实际情况修改即可
  22.  
  23. $ firewall-cmd --reload
  24.  
  25. $ setenforce 0
  26. $ sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
  1. # 在 192.168.100.10 上执行初始化命令
  2. $ systemctl start mariadb
  3. $ mysql_secure_installation # 推荐设置 root 密码, 其他选项可以全部 y
  4. $ systemctl stop mariadb
  1. # 在 192.168.100.10 上执行以下命令
  2. $ vi /etc/my.cnf.d/server.cnf
  3. ...
  4. [galera]
  5. wsrep_on=ON
  6. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  7. wsrep_cluster_name=galera_cluster
  8. wsrep_cluster_address="gcomm://192.168.100.10,192.168.100.11,192.168.100.12"
  9. wsrep_node_name=Mariadb-01 # 注意这里改成本机 hostname
  10. wsrep_node_address=192.168.100.10 # 注意这里改成本机 ip
  11. binlog_format=row
  12. default_storage_engine=InnoDB
  13. innodb_autoinc_lock_mode=2
  14. ...
  15.  
  16. # 在 192.168.100.11 上执行以下命令
  17. $ vi /etc/my.cnf.d/server.cnf
  18. ...
  19. [galera]
  20. wsrep_on=ON
  21. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  22. wsrep_cluster_name=galera_cluster
  23. wsrep_cluster_address="gcomm://192.168.100.10,192.168.100.11,192.168.100.12"
  24. wsrep_node_name=Mariadb-02 # 注意这里改成本机 hostname
  25. wsrep_node_address=192.168.100.11 # 注意这里改成本机 ip
  26. binlog_format=row
  27. default_storage_engine=InnoDB
  28. innodb_autoinc_lock_mode=2
  29. ...
  30.  
  31. # 在 192.168.100.12 上执行以下命令
  32. $ vi /etc/my.cnf.d/server.cnf
  33. ...
  34. [galera]
  35. wsrep_on=ON
  36. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  37. wsrep_cluster_name=galera_cluster
  38. wsrep_cluster_address="gcomm://192.168.100.10,192.168.100.11,192.168.100.12"
  39. wsrep_node_name=Mariadb-03 # 注意这里改成本机 hostname
  40. wsrep_node_address=192.168.100.12 # 注意这里改成本机 ip
  41. binlog_format=row
  42. default_storage_engine=InnoDB
  43. innodb_autoinc_lock_mode=2
  1. # 在 192.168.100.10 上执行以下命令
  2. $ sudo -u mysql /usr/sbin/mysqld --wsrep-new-cluster &> /tmp/wsrep_new_cluster.log &
  3. $ disown $!
  4. $ tail -f /tmp/wsrep_new_cluster.log # 如果出现 ready for connections, 表示启动成功
  1. # 在 192.168.100.11 和 192.168.100.12 启动 mariadb 服务
  2. $ systemctl start mariadb
  1. # 回到第一台服务器
  2. $ ps -ef | grep mysqld | grep -v grep | awk '{print $2}' | xargs kill -9
  3. $ systemctl start mariadb
  1. # 在任意数据库服务器执行以下命令验证 MariaDB Galera Cluster
  2. $ mysql -uroot -p -e "show status like 'wsrep_cluster_size'" # 这里应该显示集群里有3个节点
  3. $ mysql -uroot -p -e "show status like 'wsrep_connected'" # 这里应该显示ON
  4. $ mysql -uroot -p -e "show status like 'wsrep_incoming_addresses'" # 这里应该显示3个ip
  5. $ mysql -uroot -p -e "show status like 'wsrep_local_state_comment'" # 这里显示节点的同步状态
  1. # 创建 Jumpserver 数据库及授权
  2. $ mysql -uroot
  3. > create database jumpserver default charset 'utf8';
  4. > grant all on jumpserver.* to 'jumpserver'@'192.168.100.%' identified by 'weakPassword';
  5. > flush privileges;
  6. > quit

之后去 nginx 设置 tcp 代理即可