三主机springcloud小集群部署手记

目录

1、系统概况
2、安装mysql
3、安装redis集群(三主三从)
4、安装zookeeper集群
5、创建sftp用户(可略过,直接创建账户即可)
6、数据库自动同步备份(主从复制)
7、nginx负载均衡

1、系统概况

主机资源:192.168.3.186、192.168.3.187、192.168.3.188
操作系统:centos8
项目架构:springcloud
服务代理:nginx
前端:vue

架构图:


部署图.png

2、安装mysql

wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
这时候会在 /etc/yum.repos.d/目录下生成两个文件
mysql-community.repo和mysql-community-source.repo
cd /etc/yum.repos.d/
vim mysql-community.repo
将 [mysql57-community] 下的 enabled 设置为1,表示打开5.7
将 [mysql80-community] 下的 enabled 设置为0,表示关闭8.0

如果是centos8先执行
yum module disable mysql
yum -y install mysql-community-server
systemctl start mysqld.service

获取初始密码
grep 'password' /var/log/mysqld.log
cat /var/log/mysqld.log

修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

授权访问
GRANT ALL PRIVILEGES ON . TO 'admin'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;

授权刷新
FLUSH PRIVILEGES;

开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

重启防火墙
firewall-cmd --reload

3、安装redis集群(三主三从)

下载安装包5.0.4
yum -y install gcc
mkdir redis
tar -zxvf /usr/appinstall/redis-5.0.4.tar.gz -C /usr/redis
cd /usr/redis/redis-5.0.4

安装在当前目录
make && make install

或者安装到指定目录/usr/local/jervalj/redis
make && make PREFIX=/usr/local/jervalj/redis install

创建集群
1、创建节点目录
redis-cluster
mkdir /usr/redis/redis-cluster
cd /usr/redis/redis-cluster

mkdir 9000 9001

cp /usr/redis/redis-5.0.4/redis.conf /usr/redis/redis-cluster/9000

修改redis.conf
bind 0.0.0.0//开启网络,保证其他网络可以访问该主机
port 9001//每个节点的端口号
daemonize yes//守护线程 ,后台运行redis
pidfile /var/run/redis_9001.pid
appendonly yes//aof日志每一个操作都记录模式
cluster-enabled yes//开启集群模式
cluster-config-file nodes_9001.conf//集群节点的配置
cluster-node-timeout 5000//节点请求超时时间
protected-mode no//关闭保护模式
requirepass 123456 //设置redis访问密码
masterauth 123456 //设置集群节点间访问密码,跟上面一致

分发该配置到另外两台机器

scp -r /usr/redis/redis-cluster 192.168.3.187:/usr/redis
然后输入root密码

scp -r /usr/redis/redis-cluster 192.168.3.188:/usr/redis
然后输入root密码

启动每台机器上的两个节点
cd /usr/redis/redis-5.0.4/src
redis-server /usr/redis/redis-cluster/9000/redis.conf
redis-server /usr/redis/redis-cluster/9001/redis.conf

验证启动
ps -ef | grep redis

创建集群
cd /usr/redis/redis-5.0.4/src
redis-cli -a 123456 --cluster create 192.168.3.186:9000 192.168.3.187:9000 192.168.3.188:9000 192.168.3.186:9001 192.168.3.187:9001 192.168.3.188:9001 --cluster-replicas 1

验证集群
redis-cli -a 123456 -c -h 192.168.3.186 -p 9000
cluster info
cluster nodes

4、安装zookeeper集群

上传文件

解压
tar -zxvf

创建数据、日志目录
mkdir -p /usr/zookeeper/data/zookeeper
mkdir -p /usr/zookeeper/data/zookeeper/data
mkdir -p /usr/zookeeper/data/zookeeper/datalogs
mkdir -p /usr/zookeeper/data/zookeeper/logs

编辑zoo.conf
cd /usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/
cp zoo_sample.cfg zoo.cfg
dataDir=/usr/zookeeper/data/zookeeper/data
dataLogDir=/usr/zookeeper/data/zookeeper/datalogs
admin.enableServer=false

配置环境变量
vim /etc/profile
export ZK_HOME=/usr/zookeeper/apache-zookeeper-3.6.3-bin
export PATH=$ZK_HOME/bin:$PATH
source /etc/profile

vim /usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkEnv.sh
JAVA_HOME=/usr/bin //安装的是openjdk的跳过
ZOO_LOG_DIR="/usr/zookeeper/data/zookeeper/logs"

vim /etc/systemd/system/zookeeper.service

文件内容
[Unit]
Description=zookeeper.service
After=network.target
ConditionPathExists=/usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/zoo.cfg

[Service]
Type=forking
User=root
Group=root
ExecStart=/usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start
ExecStop=/usr/zookeeper/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start zookeeper
systemctl stop zookeeper

开放端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent

重启防火墙
firewall-cmd --reload

增加集群配置
vim /usr/zookeeper/apache-zookeeper-3.6.3-bin/conf/zoo.cfg
server.1=192.168.3.186:2888:3888
server.2=192.168.3.187:2888:3888
server.3=192.168.3.188:2888:3888

生成myid(每个机器都生成一下,内容填上面的服务器序号)
vim /usr/zookeeper/data/zookeeper/data/myid

逐台启动
systemctl start zookeeper

验证状态
zkServer.sh status

5、创建sftp用户(可略过,直接创建账户即可)

groupadd sftp #创建组
useradd -g sftp -s /sbin/nologin -M sftpuser #创建sftpuser并加入sftp
passwd sftpuser #设置密码,验证连接的时候要用到

cd /home
mkdir sftpuser

chown root:sftp sftpuser #修改sftpuser目录的所有者
chmod 755 sftpuser/

vim /etc/ssh/sshd_config
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /home/sftpuser

systemctl restart sshd
root创建目录file
chown -R sftpuser file

6、数据库自动同步备份(主从复制)

新建用户(数据库用户)
backupuser
123456

登录主库:

grant replication slave on . to 'backupuser'@'192.168.3.188' identified by '123456';
flush privileges;

修改my.cnf
server-id=1
log-bin=mysql-bin
binlog_format=row
log-slave-updates=true
lower_case_table_names=1
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=4
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1

change master to master_host='192.168.3.186', master_user='backupuser',master_password='123456', master_auto_position=1;
start slave;

验证数据

insert、update、delete

7、nginx负载均衡

// 设置负载服务器

upstream servername{
   server 192.168.3.186:7099;
   server 192.168.3.187:7099;
   server 192.168.3.188:7099;
}

server {
    listen 7656;
    server_name localhost;
    location / {
        root /usr/webproject/digital-index/front/static;
        index  index.html index.htm;
  }

  location /api {
      proxy_pass [http://servername](http://servername/);
      //以下参数支持大容量附件上传
      proxy_connect_timeout  600s;
      proxy_send_timeout  1200;
      proxy_read_timeout  1200;
      proxy_http_version 1.1;
      client_max_body_size 50m;
  }
}

// 设置websocket负载服务
upstream socketname{
   server 192.168.3.186:6320;
   server 192.168.3.187:6320;
   server 192.168.3.188:6320;
}

server {
   listen 6321;
   server_name localhost;
   location / {
      proxy_pass http://socketname;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容