服务器搭建指南-WK.md 11 KB

## 服务器搭建指南 Rabbitmq集群+Mysql双主集群+Keeplive高可用

看不了图片可以直接访问网页版 https://blog.csdn.net/a1003779438/article/details/130077551 @[toc]

目前项目上主要使用rabbitmq集群与mysql集群来保存任务流程数据,车位数据,车辆记录等信息,使用keepalived来配置集群高可用。再加上各个程序运行所需软件包。 以两台服务器为例,ip假设分别为192.168.2.10与192.168.2.11。命名假设分别为node1与node2。下列所有操作node1与node2均需要进行。

可选操作:sudo不需要输入命令。因为配置环境会频繁输入sudo,如果每次都需要密码就会非常影响效率。可使用以下方法取消sudo需要密码。

sudo gedit /etc/sudoers
%sudo   ALL=(ALL:ALL)  ALL    更改为 :
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

这样所有sudo操作均不需要输入密码 ,如果需要改回来,把NOPASSWD:删掉就好。

一、准备工作

1.新增用户,用户名为zx,给予zx管理员权限:

sudo useradd -m zx -s /bin/bash
sudo passwd zx
sudo adduser zx sudo
su zx

2.重启或注销电脑登录zx用户:

touch ~/.sudo_as_admin_successful

3.修改,添加主机名称:

node1改为zx-server-1,node2改为zx-server-2

sudo hostnamectl set-hostname zx-server-1 --static
sudo gedit /etc/hostname 
内容改为zx-server-1保存关闭
sudo gedit /etc/hosts/  

添加以下内容

192.168.10  zx-server-1
192.168.11  zx-server-2

测试是否成功,node1上ping zx-server-2,node2上ping zx-server-1,能ping同则说明修改生效。

二、数据库集群的安装配置

1.安装mysql:

有多种安装方式,建议直接命令安装

sudo apt update 
sudo apt install mysql-server -y	

2.设置mysql密码:

sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456';

在这里插入图片描述

exit;

3.初步配置:

sudo mysql_secure_installation

在这里插入图片描述

输入刚刚设置的密码123456

在这里插入图片描述

选择N ,不会进行密码的强校验

在这里插入图片描述

选择N ,不重设密码

在这里插入图片描述

选择N,不删除匿名用户

在这里插入图片描述

选择N,允许root远程连接

在这里插入图片描述

选择N,不删除test数据库

在这里插入图片描述

选择Y,修改权限立即生效

在这里插入图片描述

配置成功

4.新建一个zx用户并授予权限:

mysql -uroot -p123456
create user 'zx'@'%' identified by '123456';
grant all on *.* to "zx"@"%" with grant option;

在这里插入图片描述

flush privileges;
exit;

在这里插入图片描述

5.登录zx用户修改加密规则:

mysql -uroot -p123456
ALTER USER 'zx'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
exit;

6.修改配置文件:

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
把bind-address=127.0.0.1这行注释(前面加上#)
在文件最下方添加
skip-external-locking
skip-name-resolve
保存退出

7.Navicat测试远程连接:

在这里插入图片描述

8.配置双主集群:

sudo gedit /etc/mysql/my.cnf

复制粘贴以下内容

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED

# ------------------集群--------------
# 每台服务器ID为集群内唯一, 例如1,2,3
# A
server-id = 1
# B
#server-id = 2

# 开启binlog,数据同步的关键
log-bin=on

# 步进值auto_imcrement 。一般有n台主mysql就填n
auto_increment_increment=2

# 自增起始位置,一般填写第n台主机mysql.此时为第一台主
auto_increment_offset=1
#auto_increment_offset=2

#忽略mysql库,可以不填写
#binlog-ignore=mysql

#忽略information_schema库,一般不填写
#binlog-ignore=infomation_schema

#指定同步的数据库,不填写则默认所有的数据库
#replicate-do-db=test_db

# 从库连接
default_authentication_plugin=mysql_native_password

# 将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启
log-slave-updates = true 

# 主从复制模式开启
gtid_mode=on
enforce_gtid_consistency=1

注:server-id 与auto_increment_offset需修改,node1为1,node2为2

保存关闭重启服务

systemctl restart mysql.service
mysql -uzx -p123456
reset master;

node1:

change master to SOURCE_HOST='192.168.2.11',SOURCE_PORT=3306,SOURCE_USER='zx',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;

node2:

change master to SOURCE_HOST='192.168.2.10',SOURCE_PORT=3306,SOURCE_USER='zx',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;

启动同步

start replica;

查看配置状态

show slave status \G;

在这里插入图片描述

当以下两项都为YES时则集群配置成功:

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

若为NO或Connecting大概率配置错误,可在 /var/log/mysql/error.log文件查看报错信息,根据报错信息予以解决。

9.测试集群:

使用Navicat连接两个服务器的数据库,增删或修改都是同步的话则配置成功。

三、rabbitmq集群配置

1.安装rabbitmq依赖erlang:

sudo apt-get install erlang-nox

2.安装rabbitmq:

sudo apt-get update
sudo apt-get install rabbitmq-server

3.启动服务:

sudo service rabbitmq-server start 
sudo rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述

4.查看版本:

登录网页http://127.0.0.1:15672,输入默认用户名密码guest,确认node1与node2版本号一致! 在这里插入图片描述

5.创建zx用户:

依次点击Admin→Add user配置如下,密码123456:

在这里插入图片描述

点击Adduser后新增一个用户 在这里插入图片描述

6.设置zx用户权限:

点击用户名zx→Set permission→Set topic permission

在这里插入图片描述

7.检查是否成功:

点击Admin,如图所示则创建成功

在这里插入图片描述

8.配置集群:

在node1上启动服务:
sudo rabbitmqctl start_app

安装ssh:

sudo apt install ssh

修改.erlang.cookie权限:

sudo chmod 666 /var/lib/rabbitmq/.erlang.cookie
sudo chown root:root /var/lib/rabbitmq/.erlang.cookie
sudo chmod 777 /var/lib/rabbitmq

拷贝,node1上执行:

scp /var/lib/rabbitmq/.erlang.cookie zx@zx-server-2:/var/lib/rabbitmq/ 

恢复权限:

sudo chmod 755 /var/lib/rabbitmq
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

停止重置node2服务并加入到集群

sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@zx-server-1

在node1上开启镜像队列

sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

开启node2节点服务

sudo rabbitmqctl start_app

登录网站127.0.0.1:15672查看集群是否成功搭建 在这里插入图片描述

四.配置keeplived

1.安装keeplived

sudo apt-get install keepalived

2.设置随系统自启动

sudo gedit /etc/rc.local

在文件中添加以下内容后保存退出:

#!/bin/sh -e
# 服务类要以 & 结尾一行,表示不要等待运行结束
service keepalived start &
#文末必须以exit 0结束
exit 0

3.配置keepalived

sudo gedit /etc/keepalived/keepalived.conf

在文件中加入以下内容:

global_defs {
router_id zx01 #路由id号,不可重复
}
vrrp_instance VI_1{ #定义一个实例
state MASTER    #MASTER为主节点、BACKUP为备用节点  只是说明,具体根据优先级,node2填写BACKUP
interface eno1  #虚拟IP地址放置的网卡位置,使用ipconfig查看虚拟网卡名称
virtual_router_id 51  #当前虚拟路由唯一标识,同一个集群id需要一致,范围0-255
priority 101    #当前节点在虚拟路由中的优先级,值越大优先级越大;范围1-254
advert_int 1    #主备通讯间隔
authentication {
    auth_type PASS
    auth_pass 123456    #认证号,集群中需要一致
}
virtual_ipaddress {
    192.168.2.100 #使用的虚拟IP,不能和网段内IP冲突
}
}

4.重启服务:

sudo service keepalived restart

5.测试:

在192.168.2.10(MASTER)节点上执行:ip a

在这里插入图片描述

如果前面顺利,这里可以看到设置的虚拟ip
192.168.2.11(BACKUP)上没有虚拟IP
停掉192.168.2.10(MASTER)的keepalived
sudo service keepalived stop
再到192.168.2.11(BACKUP)上执行:ip a
可以看到虚拟IP说明配置成功
然后再启动192.168.2.10(MASTER)的keepalived
sudo service keepalived start

五.常用库安装

sudo apt install git
sudo apt install python3-pip
pip3 apt install aio_pika
pip3 apt install pymysql
pip3 install DBUtils==1.3
pip3 install colorlog