一、部署说明
记录公司一项目部署测试环境,用到的中间件:nacos、nginx、rockermq、mysql、harbor等
服务启动方式:docker(docker-compose编排启动)
1、挂载磁盘
#查看数据盘
lsblk
#磁盘分区
fdisk /dev/sdb
#创建pv
pvcreate /dev/sdb
#创建vg,data_vg为你想创建的vg名称
vgcreate data_vg /dev/sdb
#创建lv,-l指定大小,-n指定lv名称
lvcreate -l +100%FREE -n data_lv data_vg
#查看创建的pv、vg、lv
pvdisplay
vgdisplay
lvdisplay
#格式化
mkfs.ext4 /dev/data_vg/data_lv
#创建挂载目录
mkdir /data
#配置永久挂载,仿照内容添加下行
vi /etc/fstab
/dev/data_vg/data_lv /data ext4 defaults 0 0
#执行挂载命令
mount -a
#查看挂载情况
df -h
2、基础配置
#配置所有用户的最大文件打开数、最大进程数及最大内存限制
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited
#配置内核参数
fs.file-max = 655360
vm.max_map_count = 655360
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 2
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.ip_local_port_range = 2048 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_retries2 = 5
net.core.somaxconn = 4096
net.netfilter.nf_conntrack_tcp_timeout_established = 300
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 12
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
#关闭防火墙及selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
3、安装docker及docker-compose
https://download.docker.com/linux/centos/
从中找到对应系统版本的stable(稳定版)并下载docker-ce、docker-ce-cli、containerd.io
https://github.com/docker/compose/releases
从中下载docker-compose
#安装docker
rpm -Uvh --nofiles --force *.rpm
#安装docker-compose
mv docker-compose-linux-x86_64 docker-compose
chmod +x docker-compose
mv docker-compose /bin/ #或者/sbin/
4、安装harbor
https://github.com/goharbor/harbor/releases
从中下载harbor离线包
tar xf harbor-offline-installer-v2.3.4.tgz -C /data
cd /harbor
vi harbor.yml
#自定义配置信息,主要修改内容如下
hostname #主机名,一般与url域名一致
http https #协议及端口
certificate #证书路径
private_key
external_url #harbor服务器的url
harbor_admin_password #admin用户密码
data_volume #harbor安装目录
#安装
./install.sh
#验证
docker-compose ps
5、安装mysql
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
#下载mysql的离线rpm源,mysql-community-client、mysql-community-common、mysql-community-libs、mysql-community-server
#依照顺序安装
rpm -ivh mysql-community-common-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm
#初始化配置
grep passwor/var/log/mysqld.log #获取初始化密码
mysql -u root -p
alter user root@localhost identified by '123456';#数据库修改初始化密码
systemctl restart mysqld #重启数据库生效
update user set host='%' where user='root'; #开启远程登录
6、安装nacos
https://registry.hub.docker.com/
#从中找到对应nacos版本镜像,并下载
https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
#从中下载nacos的初始化数据库脚本,并执行
mysql -u root -p
#创建nacos数据库
create database nacos DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#创建nacos用户
create user 'nacos'@'%' identified by 'Nacos_123';
#为nacos授权
grant all privileges on nacos.* to 'nacos'@'%';
#使用nacos登陆mysql,并初始化数据
mysql -u nacos -p
source /root/init.sql;
#编写docker-compose文件,并启动nacos
version: "2"
services:
nacos:
image: nacos/nacos-server:2.0.3
container_name: nacos
environment:
PREFER_HOST_MODE: hostname
MODE: standalone
MYSQL_SERVICE_HOST: 172.31.88.22
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_USER: nacos
MYSQL_SERVICE_PASSWORD: Nacos_123
volumes:
- ./standalone-logs/:/home/nacos/logs
ports:
- "8848:8848"
restart: always
#验证
docker-compose ps
7、安装rocketmq
https://registry.hub.docker.com/
#从中找到对应rocketmq镜像,并下载
vi docker-compose.yaml
version: '3.5'
services:
rmqnamesrv:
image: foxiswho/rocketmq:server
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- /etc/localtime:/etc/localtime\ro
networks:
rmq:
aliases:
- rmqnamesrv
restart: always
rmqbroker:
image: foxiswho/rocketmq:broker
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- /etc/localtime:/etc/localtime\ro
- ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
environment:
NAMESRV_ADDR: "namesrvip:9876" #注意修改ip地址
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms4g -Xmx4g -Xmn4g"
command: mqbroker -c /etc/rocketmq/broker.conf
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
restart: always
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 28080:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrvip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" #注意修改ip地址
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
restart: always
networks:
rmq:
name: rmq
driver: bridge
#创建boker配置文件
vi ./data/brokerconf/broker.conf
# 所属集群名字
brokerClusterName=DefaultCluster
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId=0
# nameServer地址,分号分割
namesrvAddr=namesrvip:9876
# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP
brokerIP1=namesrvip
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存储路径
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消费队列存储
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存储路径
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 文件存储路径
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 文件存储路径
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# 发消息线程池数量
sendMessageThreadPoolNums=128
useReentrantLockWhenPutMessage=true
# 拉消息线程池数量
# pullMessageThreadPoolNums=128
#启动
docker-compose up -d
#查看状态
docker-compose ps
8、安装nginx
#下载地址
https://nginx.org/packages/centos/7/x86_64/RPMS/
#安装
rpm -ivh *.rpm