服务器
nginx01 10.10.10.200 10.10.32.200
nginx02 10.10.10.201 10.10.32.201
openGateway01 10.10.10.137 10.10.8.137
openGateway02 10.10.10.138 10.10.8.138
aes应用01 10.10.10.101 10.10.8.101
aes应用02 10.10.10.102 10.10.8.102
mysql 10.10.10.105 10.10.8.105
服务器密码重置
echo 'mH7^g07Rcy2' | passwd --stdin root
添加amc用户以amc用户去启动项目
useradd amc
echo 'mR7#g09hcy2' | passwd --stdin amcnginx01和nginx02
nginx.conf
[root@nginx1 nginx]# pwd
/data/deploy/nginx
[root@nginx1 nginx]# ls
bak cert conf docker-compose.yml html log
[root@nginx1 nginx]# cat docker-compose.yml
services:
nginx:
restart: always
image: nginx:1.22.1
container_name: nginx
environment:
- "TZ=Asia/Shanghai"
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf/conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
- ./log:/var/log/nginx
- ./cert:/home
ports:
- 443:443
- 80:80
networks:
- network
tty: true
networks:
network:
external: true[root@nginx01 conf]# cat nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 8192;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 512m;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_min_length 1k;
gzip_vary on;
gzip on;
upstream gateway {
server 10.10.8.137:8085 weight=3;
server 10.10.8.138:8085 weight=3;
}
include /etc/nginx/conf.d/*.conf;
}[root@nginx01 keepalived]# pwd
/etc/keepalived
[root@nginx01 keepalived]# ls
keepalived.conf nginx_check.sh
[root@nginx01 keepalived]# cat keepalived.conf
! Configuration File for keepalived
# 全局配置
global_defs {
# 路由ID,不能重复,通常为 hostname
router_id nginx01
}
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_nginx {
# 检测 nginx 状态的脚本路径
script "/etc/keepalived/nginx_check.sh"
# #每2秒运行一次上面的脚本
interval 2
unicast_src_ip 10.10.32.200 #本机IP地址
# 失败一次,将自己的优先级-20,如果MASTER的priority=100,BACKUP的priority=70
# 那么MASTER要失败2次后变为60,低于BACKUP的70,MASTER节点会降级为BACKUP,而BACKUP节点升级为MASTER
weight -20
}
# 定义实例
vrrp_instance VI_1 {
# 可选值为 MASTER 或者 BACKUP
state MASTER
unicast_src_ip 10.10.32.200
# 网卡名称,与本机 IP 地址所在的网卡名称相同
interface ens18
# 虚拟路由的ID,MASTER和BACKUP必须是一致的。
virtual_router_id 66
# 定义优先级,数字越大,优先级越高,MASTER的优先级必须大于BACKUP的优先级
priority 100
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
# 认证方式,此处PASS表示为密码
auth_type PASS
# 生产环境设置6位随机密码
auth_pass 475522
}
# 设置虚拟IP地址
virtual_ipaddress {
10.10.32.202
}
unicast_peer {
10.10.32.201 #对端IP地址,支持多台机器
}
# 执行脚本
track_script {
# 对应vrrp_script配置的脚本
chk_nginx
}
}
[root@nginx01 keepalived]# cat nginx_check.sh
#!/bin/bash
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
result=`pidof nginx`
if [ ! -z "$result" ];
then
exit 0
else
exit 1
fi[root@nginx02 ~]# cd /etc/keepalived/
[root@nginx02 keepalived]# ls
keepalived.conf nginx_check.sh
[root@nginx02 keepalived]# cat keepalived.conf
! Configuration File for keepalived
# 全局配置
global_defs {
# 路由ID,不能重复,通常为 hostname
router_id nginx02
}
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_nginx {
# 检测 nginx 状态的脚本路径
script "/etc/keepalived/nginx_check.sh"
# #每2秒运行一次上面的脚本
interval 2
unicast_src_ip 10.10.32.201 #本机IP地址
# 失败一次,将自己的优先级-20,如果MASTER的priority=100,BACKUP的priority=70
# 那么MASTER要失败2次后变为60,低于BACKUP的70,MASTER节点会降级为BACKUP,而BACKUP节点升级为MASTER
weight -20
}
# 定义实例
vrrp_instance VI_1 {
# 可选值为 MASTER 或者 BACKUP
state BACKUP
unicast_src_ip 10.10.32.201
# 网卡名称,与本机 IP 地址所在的网卡名称相同
interface ens18
# 虚拟路由的ID,MASTER和BACKUP必须是一致的。
virtual_router_id 66
# 定义优先级,数字越大,优先级越高,MASTER的优先级必须大于BACKUP的优先级
priority 99
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
# 认证方式,此处PASS表示为密码
auth_type PASS
# 生产环境设置6位随机密码
auth_pass 475522
}
# 设置虚拟IP地址
virtual_ipaddress {
10.10.32.202
}
unicast_peer {
10.10.32.200 #对端IP地址,支持多台机器
}
# 执行脚本
track_script {
# # 对应vrrp_script配置的脚本
chk_nginx
}
}
[root@nginx02 keepalived]# cat nginx_check.sh
#!/bin/bash
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
# 如果脚本执行结果非0,并且weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
result=`pidof nginx`
if [ ! -z "$result" ];
then
exit 0
else
exit 1
fiJava环境变量
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
[root@localhost build]# pwd
/home/amc/openGateway/build
[root@localhost build]# ls
conf deploy_ecology-gateway.sh logs manatee-ecology-gateway.jar
启动脚本
[root@localhost build]# cat deploy_ecology-gateway.sh
#!/bin/sh
source /etc/profile
# 定义应用程序的名字
process_name=
[root@localhost aes]# cd build/
[root@localhost build]# ls
conf deploy_module_ecology.sh logs module-ecology.jar
启动脚本
[root@localhost build]# cat deploy_module_ecology.sh
#!/bin/sh
source /etc/profile
# 定义应用程序的名字
process_name="module-ecology.jar"
deploy_dir="/home/amc/aes/build"
# 检查 Java 进程是否存在
check_process() {
process_pids=$(ps -ef | grep ${process_name} | grep -v grep | awk '{print $2}')
process_nums=$(ps -ef | grep ${process_name} | grep -v grep | wc -l)
if [[ $process_nums -le 1 ]];then
if [[ -n $process_pids ]];then
echo "Process is running."
return 0
else
echo "Process is not running."
return 1
fi
else
echo "If the number of processes is greater than one, the script will automatically exit"
exit 1
fi
}
# 启动 Java 进程
start_process() {
if check_process; then
echo "Process is already running."
exit 1
fi
cd ${deploy_dir}
java -jar "$process_name" --spring.config.location=/home/amc/aes/build/conf/bootstrap.yml > /dev/null 2>&1 &
echo "Started process end."
}
# 停止 Java 进程
stop_process() {
if ! check_process; then
echo "Process is not running."
else
pid=$(pgrep -f "$process_name")
kill -TERM "$pid"
echo "Stopped process end."
fi
}
# 重启 Java 进程
restart_process() {
stop_process
sleep 2
start_process
}
# 根据传入的参数执行相应的操作
case "$1" in
start)
start_process
;;
stop)
stop_process
;;
restart)
restart_process
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
启动配置文件
[root@localhost build]# cat conf/bootstrap.yml
# Tomcat
server:
port: 9204
# Spring
spring:
datasource:
druid:
url:
application:
# 应用名称
name: manatee-ecology
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: nacos1:8848,nacos2:8848,nacos3:8848
username: amc
password: amc34387.
namespace: public
config:
# 配置中心地址
server-addr: nacos1:8848,nacos2:8848,nacos3:8848
# 配置文件格式
file-extension: yml
namespace: public
username: amc
password: amc34387.
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}[root@localhost mysql]# ls
conf data docker-compose.yml
[root@localhost mysql]# cat conf/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-bin=mysql-bin
binlog-format=ROW
secure-file-priv= NULL
innodb_log_file_size=1024M
innodb_io_capacity=20000
innodb_io_capacity_max=40000
innodb_buffer_pool_instances=4
sort_buffer_size=4M
innodb_buffer_pool_size=2G
max_connections=200
default-time_zone='+8:00'
[root@localhost mysql]# cat docker-compose.yml
services:
mysql:
restart: always
image: mysql:8.0.34
container_name: mysql
volumes:
- ./data:/var/lib/mysql
- ./conf:/etc/mysql/conf.d
networks:
- network
logging:
options:
max-size: 1g
environment:
- "MYSQL_ROOT_PASSWORD=portal23495amc!"
- "TZ=Asia/Shanghai"
ports:
- 3306:3306
networks:
network:
external: true
生产更改数据库密码
ALTER USER 'root'@'%' IDENTIFIED BY 'QAl0+!3vP3';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QAl0+!3vP3';
FLUSH PRIVILEGES;
EXIT;
创建只读账号
CREATE USER 'read_only'@'%' IDENTIFIED BY 'read@197234.nbfamc';
GRANT SELECT ON ecology.* TO 'read_only'@'%';
FLUSH PRIVILEGES;
EXIT;
项目数据库
CREATE USER 'ecology'@'%' IDENTIFIED BY 'q8Rw!gJRAC';
GRANT ALL PRIVILEGES ON ecology.* TO 'ecology'@'%';
FLUSH PRIVILEGES;
EXIT;