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

 

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