centos系统部署规范

1.系统准备

1.1系统基本运行要求

原则上参照鹤壁部署最低的要求:

至强16核,64G内存,Centos7.4,16T存储

三台:分别为服务运行机器a,es独立服务器b,数据备份服务器c【数据备份服务需增大硬盘存储空间】

1.2 挂载分配

挂载分配:a ----------- /root/image 3T  图片    /data/zagt 2T     mysql数据和备份

                 b  ----------参照a,

                 c -----------  /data/zagt 12T     a服务器的备份数据库和图片

约定最小的,但是实际部署要根据现场情况随机应变。

1.3 系统目录介绍

/root/image : 接口上传图片本地物理存放空间

/data/zagt/mysql_data: maridb 存放数据文件位置

/data/zagt/mysql_backup: maridb存放本地备份数据文件位置

/usr/local/APP:存放上传各类软件包的位置

/usr/local:各种软件的安装位置

1.4 项目软件目录介绍

/appauto  : 项目接口和web服务容器
/appauto/zagt_run:web 根目录
/appauto/zagt_run/bin:web 项目 启停sh存放目录
/appauto/zagt_run/config:web 项目 application.yml系统配置目录
/appauto/zagt_run/logs:web 项目 日志目录
/appauto/zagt_run/static:web 项目vue前台目录
/appauto/zagt_run/lib:web 项目后端jar包,以及第三方引用jar包目录
/appauto/zagt_run/zagt-runner-1.0.0-SNAPSHOT.jar:web 项目启动jar包

 

 

2.软件准备

2.1环境软件

均选用开源免费版本

1.es:elasticsearch-7.3.2-linux-x86_64
2.es中文分词:elasticsearch-analysis-ik-7.3.2
3.activeMq:apache-activemq-5.15.8-bin
4.java:jdk-8u162-linux-x64
5.monit:monit-5.26.0
6.canal必须:canal.adapter-1.1.5-SNAPSHOT【适配器】canal.deployer-1.1.5-SNAPSHOT【服务】
7.canal选装:canal.admin-1.1.5-SNAPSHOT【管理器】       
8.mariadb:mariadb-10.3.21-linux-x86_64

2.2项目软件

 

1.web:zagt_run 
2.接口:zagt_interface_run

3.安装部署软件

安装原则:总体上除项目软件外统一安装至/usr/local 而且非必须不改变解压与本文件夹下软件目录名称。

3.1 去除系统自带java,mysql

卸载java
<1># java -version                       // 查看已经安装的JAVA版本信息
<2># rpm -qa|grep java                // 查看jdk的信息
<3># yum -y remove java java-1.8.0-openjdk-headless.x86_64         // 卸载  
<4># yum -y remove java javapackages-tools.noarch            // 卸载  
卸载maridb
<1># rpm -qa | grep mariadb
<2># yum -y remove mari*
<3># rm -rf /var/lib/mysql/*
<4># find / -name mysql
<5># rm -rf ... //删除上述mysql目录

抄袭:https://www.cnblogs.com/testing-BH/p/11951449.html

3.2 安装java

安装java
<1># tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/local/
<2># vi /etc/profile

添加下面的话
# set java environment 
JAVA_HOME=/usr/local/jdk1.8.0_162/
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

<3># source /etc/profile
<4># javac -version
javac 1.8.0_162

3.3 安装mariadb

1> useradd -s /sbin/nologin -M mysql  // 创建用户
2> tar -xzvf mariadb-10.3.21-linux-x86_64.tar.gz -C /usr/local/   //解压
3> cd /usr/local/mariadb-10.3.21-linux-x86_64  //进入目录
4> chown -R mysql:mysql         //赋予权限
5> cd /            //回到根目录:创建/data/zagt/mysql_data 文件目录 /data/zagt/mysql_backup 后续备份目录          
6> mkdir data    ,cd  data  ,mkdir zagt ,cd zagt ,mkdir mysql_data, mkdir mysql_backup
7> vi /etc/my.cnf

----------------------输入下列内容------------------------
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=/usr/local/mariadb-10.3.21-linux-x86_64
#设置mysql数据库的数据的存放目录
datadir=/data/zagt/mysql_data
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

----------------------------------------------
8> cd /usr/local/mariadb-10.3.21-linux-x86_64       //进入数据库目录

9> ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb-10.3.21-linux-x86_64 --datadir=/data/zagt/mysql_data            //安装

10> cp support-files/mysql.server /etc/init.d/mysql  // 复制成服务
11> chmod +x /etc/init.d/mysql          //赋予可执行权限
12>  vi /etc/init.d/mysql
-----------------------------------------------
basedir=/usr/local/mariadb-10.3.21-linux-x86_64
datadir=/data/zagt/mysql_data

-----------------------------------------------
13> chkconfig --add mysql              //设置开机启动
14> vi /etc/profile      //设置环境变量
------------------------------------
#set mariadb environment
export MARIADB_HOME=/usr/local/mariadb-10.3.21-linux-x86_64
export PATH=$PATH:${MARIADB_HOME}/bin
------------------------------------
15>source /etc/profile
16> systemctl start mysql   //启动  status ,stop
17> /usr/local/mariadb-10.3.21-linux-x86_64/bin/mysqladmin -u root password '1qa2ws3ed' //设置新密码
18> mysql -uroot -p1qa2ws3ed               //登录远程登录权限
19> use mysql
20> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '1qa2ws3ed' WITH GRANT OPTION;
21> flush privileges;

 3.4 安装es+es中文分词

tar -xzvf elasticsearch-7.3.2-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
把中文分词器解压后ik文件夹存放至elasticsearch-7.3.2
cp -R elasticsearch-7.3.2 elasticsearch-7.3.2-9200
cp -R elasticsearch-7.3.2 elasticsearch-7.3.2-9201
mv elasticsearch-7.3.2 elasticsearch-7.3.2-9202

配置修改:elasticsearch-7.3.2-9200/config/elasticsearch.yml

cluster.name: my-application
node.name: node-1
node.master: true
node.data: true
path.data: /usr/local/elasticsearch-7.3.2-9200/data
path.logs: /usr/local/elasticsearch-7.3.2-9200/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false

配置修改:elasticsearch-7.3.2-9201/config/elasticsearch.yml

cluster.name: my-application
node.name: node-2
node.master: false
node.data: true
path.data: /usr/local/elasticsearch-7.3.2-9201/data
path.logs: /usr/local/elasticsearch-7.3.2-9201/logs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
cluster.initial_master_nodes: ["node-1","node-2"]
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false

配置修改:elasticsearch-7.3.2-9202/config/elasticsearch.yml

cluster.name: my-application
node.name: node-3
node.master: false
node.data: true
path.data: /usr/local/elasticsearch-7.3.2-9202/data
path.logs: /usr/local/elasticsearch-7.3.2-9202/logs
network.host: 0.0.0.0
http.port: 9202
transport.port: 9302
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false

设置nofile,nproc大小

vi /etc/security/limits.conf
*               soft    nofile          65536
*               hard    nofile          65536
*               soft    nproc           4096
*               hard    nproc           4096
vi /etc/sysctl.conf

增加 vm.max_map_count=262144

sysctl -p

创建用户zagt

groupadd zagt
useradd zagt -g zagt -p zagt
chown -R zagt:zagt elasticsearch-7.3.2-*
ls -l

测试启动是否正常

su zagt
./elasticsearch-7.3.2-9200/bin/elasticsearch -d
./elasticsearch-7.3.2-9201/bin/elasticsearch -d
./elasticsearch-7.3.2-9202/bin/elasticsearch -d

curl -XGET localhost:9200/_cluster/health?pretty=true

 3.5 安装canal

3.5.1解压软件

1. 新建  /usr/local/canal-adapter     /usr/local/canal-server  并把软件包解压至相应目录

3.5.2 打开maridb 的bin日志

vi /etc/my.cnf

插入
log_bin=/data/zagt/mysql_data/bin-log
log_bin_index=/data/zagt/mysql_data/mysql-bin.index

server_id=7
binlog_format=ROW
expire_logs_days=7 
slave_skip_errors=1062

重启后—验证

show variables like '%log_bin%'

show variables like 'binlog_format%'; 

创建mysql用户

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

3.5.3 添加es索引脚本

公司50系统上/usr/local/canal-adapter/conf/es7 下全部文档放置对应位置【其他资源es6  hbase  kudu  rdb下yml资源删掉】

3.5.4 创建es索引

公司50/usr/local/APP/es新建索引canal版本 Copy.postman_collection.json       运行postman脚本(记事本打开,修改对应ip)增加索引 

3.5.5 安装

https://blog.csdn.net/zhenghongcs/article/details/109476376?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

canal-server

修改配置文件conf/example/instance.properties,按如下配置即可,主要是修改数据库相关配置;

# 需要同步数据的MySQL地址
canal.instance.master.address=127.0.0.1:3306
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=
# 用于同步数据的数据库账号
canal.instance.dbUsername=canal
# 用于同步数据的数据库密码
canal.instance.dbPassword=canal
# 数据库连接编码
canal.instance.connectionCharset = UTF-8
# 需要订阅binlog的表过滤正则表达式
canal.instance.filter.regex=.*\\..*

运行测试

sh bin/startup.sh

tail -f logs/canal/canal.log

tail -f logs/example/example.log 

canal-adapter

修改配置文件conf/application.yml,按如下配置即可,主要是修改canal-server配置、数据源配置和客户端适配器配置;

canal.conf:
  mode: tcp # 客户端的模式,可选tcp kafka rocketMQ
  flatMessage: true # 扁平message开关, 是否以json字符串形式投递数据, 仅在kafka/rocketMQ模式下有效
  zookeeperHosts:    # 对应集群模式下的zk地址
  syncBatchSize: 1000 # 每次同步的批数量
  retries: 0 # 重试次数, -1为无限重试
  timeout: # 同步超时时间, 单位毫秒
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 127.0.0.1:11111 #设置canal-server的地址
    canal.tcp.zookeeper.hosts:
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:
 
  srcDataSources: # 源数据库配置【个性化,根据实际】
    defaultDS:
      url: jdbc:mysql://127.0.0.1:3306/canal_test?useUnicode=true
      username: canal
      password: canal
  canalAdapters: # 适配器列表
  - instance: example # canal实例名或者MQ topic名
    groups: # 分组列表
    - groupId: g1 # 分组id, 如果是MQ模式将用到该值
      outerAdapters:
      - name: logger # 日志打印适配器
      - name: es7 # ES同步适配器
        hosts: 127.0.0.1:9200 # ES连接地址【根据实际】
        properties:
          mode: rest # 模式可选transport(9300) 或者 rest(9200)
          # security.auth: test:123456 #  only used for rest mode
          cluster.name:  my-application # ES集群名称

运行测试

sh bin/startup.sh
tail -f logs/adapter/adapter.log

3.6 monit安装

前提:内网环境不能用yum    Centos7.4
1.解压安装
tar -xzvf monit-5.26.0.tar.gz -C /usr/local/
 	cd /usr/local/monit-5.26.0
 	./configure  --without-zlib --without-pam --without-ssl --without-largefile
 	make
 	make install
 	cp monitrc /etc/monitrc
    mkdir /etc/monit.d
2.配置文件vi /etc/monitrc

set daemon  60
 #set log syslog
 set logfile /var/log/monit.log
 set httpd port 2812 and
 use address 172.20.10.11
 allow 0.0.0.0/0.0.0.0
 allow admin:monit
 #with ssl {            # enable SSL/TLS and set path to server certificate
 #    pemfile: /etc/ssl/certs/monit.pem
 #}
 include /etc/monit.d/*

3.安装服务

 cp /usr/local/monit-5.26.0/system/startup/monit.service /usr/lib/systemd/system/monit.service

 monit.service 原文如下
-------------------------------------start----------
# This file is systemd template for monit service. To
# register monit with systemd, place the monit.service file
# to the /lib/systemd/system/ directory and then start it
# using systemctl (see bellow).
#
# Enable monit to start on boot:
#         systemctl enable monit.service
#
# Start monit immediately:
#         systemctl start monit.service
#
# Stop monit:
#         systemctl stop monit.service
#
# Status:
#         systemctl status monit.service

[Unit]
Description=Pro-active monitoring utility for unix systems
After=network.target
Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo

[Service]
Type=simple
KillMode=process
ExecStart=/usr/local/bin/monit -I -c ${prefix}/etc/monitrc
ExecStop=/usr/local/bin/monit -c ${prefix}/etc/monitrc quit
ExecReload=/usr/local/bin/monit -c ${prefix}/etc/monitrc reload
Restart=on-abnormal
StandardOutput=null

[Install]
WantedBy=multi-user.target
-------------------------------------end----------

systemctl enable monit

reboot  

4.脚本运行  
注意三点,1.全路径,
         2.全路径,
         3.全路径------这三点是耗时一天的成果---------------

3.7 mysql备份

备份脚本:该脚本是部署本地备份的脚本,要根据实际修改参数:同步图片可以用rsync对应部署看实际需求,非必须。

#!/bin/bash
# 定期备份本机mysql数据库,运行前需要根据情况修改 backupdir USERNAME PASSWORD DBNAME DAYS,DAYS是保存日志天数,之前的会被删 
# crontab -e
# 00 3 * * * root /home/zagt/mysqlbackup.sh
# 分 时 日 月 周
# 恢复备份 gzip < dbname_2008010103.sql.gz | mysql -u root -p dataname
#backupdir=/data/mysqlbak/mysql
#backupdir=/root/data/zagt/mysql/mysql_backup/
#HOST=192.168.1.90
#USERNAME=root
#PASSWORD=aq1sw2de3
#DAYS=7
#DBNAME="nanchang"   


#echo -e "[mysqldump]\n
#user=${USERNAME}\n
#password=${PASSWORD}\n" > /root/data/zagt/.my.cnf
#chmod 600 /data/zagt/.my.cnf
#time=` date +%Y%m%d_%H%M%s `
#/usr/local/mysql/bin/mysqldump ${DBNAME} | gzip > $backupdir/${DBNAME}_$time.sql.gz
#delete old bakfile
#find $backupdir -name "${DBNAME}_*.sql.gz" -type f -mtime +${DAYS}  -exec rm {} \; > /dev/null 2>&1 
#rm /root/data/zagt/.my.cnf



m_user="root"
m_pass="aq1sw2de3"
m_host="192.168.1.90"
m_conn="-u $m_user -p$m_pass -h $m_host"
m_db="nanchang"

#2.定义备份目录、工具、时间、文件名主体
bak_dir="/root/data/zagt/mysql/mysql_backup/"
bak_cmd="/usr/local/mysql/bin/mysqldump"
bak_time=`date +%Y%m%d-%H%M`

name="$m_db-$bak_time"

cd $bak_dir
$bak_cmd $m_conn $m_db --skip-lock-tables |gzip > $name.sql.gz
# To delete old backup 7 days ago 时间设定7天前可自行修改
find $bak_dir -name $m_db"*.sql.gz" -type f -mtime +14 -exec rm {} \; > /dev/null 2>&1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章