中间件单机版部署

中间件单机版部署

目录规划

规划 目录 备注
应用程序安装路径 /data/application/app/
数据存储目录 /data/application/data/
数据日志目录 /data/application/logs/
数据备份目录(备份服务器) /data/application/backup/
服务器上临时存放地 /data/application/tmp/
服务器上工具存放地 /data/application/tools//
服务器上监控存放地 /data/application/prometheus/
mkdir   /data/application/{app,data,logs,backup,tmp,tools,prometheus} -p
mkdir  /data/application/logs/mysql

Rocky linux 9

服务器NTP

yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd

vim /etc/chrony.conf
#新增下面行
server time.tencentyun.com iburst
#查看时间同步源状态
chronyc sources -v
systemctl restart chronyd
chronyc sourcestats -v
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
cat /etc/selinux/config
swapoff -a
#注释掉这一行,每个版本不一样,所以需要检查一下
sed -i "s/\/dev\/mapper\/centos-swap/# \/dev\/mapper\/centos-swap/" /etc/fstab
cat /etc/fstab

cat <<EOF>>/etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
EOF

cat <<EOF>>/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
EOF

mysql 部署

cd /data/application/tools
tar xvf mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz  -C /data/application/app/
cd /data/application/app/
groupadd  mysql
useradd  -r -g mysql mysql 
chown -R mysql.mysql  /data/application/data/mysql/ 
touch  /data/application/logs/mysql/mysqld.log 
chown  -R mysql.mysql /data/application/logs/mysql/ 

初始化

/data/application/app/mysql-8.0.37/bin/mysqld --user=mysql --basedir=/data/application/app/mysql-8.0.37 --datadir=/data/application/data/mysql/data/ --lower-case-table-names=1 --initialize-insecure 

修改my.cnf

cat << EOF > /etc/my.cnf
#
[mysqld]
basedir = /data/application/app/mysql-8.0.37
datadir = /data/application/data/mysql/data/
port = 9934
socket =/data/application/logs/mysql/mysql.sock
pid-file=/data/application/logs/mysql/mysqld.pid
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=''
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=10000
max_allowed_packet=1073741824
bind-address=0.0.0.0
skip-name-resolve
lower_case_table_names=1
log_bin_trust_function_creators=1
sort_buffer_size=1048576
log_bin=mysql_bin
binlog-format=Row
expire_logs_days=7
innodb_buffer_pool_size=8G
innodb_buffer_pool_instances=8

[mysqld_safe]
log-error=/data/application/logs/mysql/mysqld.log
pid-file=/data/application/logs/mysql/mysqld.pid

[client]
default-character-set=utf8
socket=/data/application/logs/mysql/mysql.sock

[mysql]
default-character-set=utf8
EOF

动态库软链

ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

配置system 启动

cat <<EOF> /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Service]
User=mysql
Group=mysql
PIDFile=/data/application/logs/mysql/mysqld.pid
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/data/application/app/mysql-8.0.37/bin/mysqld --daemonize --pid-file=/data/application/logs/mysql/mysqld.pid
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false

[Install]
WantedBy=multi-user.target
EOF
#启动服务
systemctl daemon-reload
systemctl enable mysql
systemctl start mysql
systemctl status mysql

初始化密码

/data/application/app/mysql-8.0.37/bin/mysqladmin -uroot  password Q1Pq1iZEDnGelRmD

/data/application/app/mysql-8.0.37/bin/mysql -uroot  -pQ1Pq1iZEDnGelRmD -P 9934 -h localhost -e  "CREATE USER 'root'@'%' IDENTIFIED BY 'Q1Pq1iZEDnGelRmD';"

/data/application/app/mysql-8.0.37/bin/mysql -uroot  -pQ1Pq1iZEDnGelRmD -P 9934 -h localhost -e  " grant all privileges on *.* to 'root'@'%' with grant option;"

/data/application/app/mysql-8.0.37/bin/mysql -uroot  -pQ1Pq1iZEDnGelRmD -P 9934 -h localhost -e  "flush privileges;"

redis 部署

tar xvf redis-6.0.6.tar.gz -C /data/application/app/
yum install gcc -y
cd /data/application/app/redis-6.0.6/
make PREFIX=/data/application/app/redis-6.0.6  install
mkdir  /data/application/data/redis/data   -p
mkdir  /data/application/data/redis/logs  -p
cat << EOF > /data/application/app/redis-6.0.6/redis.conf
# 修改的
bind 0.0.0.0
daemonize yes
requirepass ufYdb3Xf4QmPx08X
port 9944
logfile "/data/application/data/redis/logs/redis.log"
pidfile /data/application/app/redis-6.0.6/redis.pid
dir /data/application/data/redis/data
EOF

system 启动

cat << EOF >/usr/lib/systemd/system/redis.service
[Unit]
Description=Redis server service
After=network.target

[Service]
Type=forking
KillMode=process
PIDFile=/data/application/app/redis-6.0.6/redis.pid
ExecStart=/data/application/app/redis-6.0.6/bin/redis-server /data/application/app/redis-6.0.6/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
TimeoutStopSec=5
PrivateTmp=false
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF

#启动服务

systemctl enable redis
systemctl start redis
systemctl status redis

测试

./bin/redis-cli  -h 192.168.5.102 -a D6Mq5xH8umJx -p 9944

rabbitmq 安装

yum install compat-openssl11.x86_64 -y
#rpm -i compat-openssl10-1.0.2o-4.el8.x86_64.rpm
rpm -ivh --nodeps esl-erlang_21.3.1-1_centos_7_amd64.rpm
rpm -ivh --nodeps  rabbitmq-server-3.7.13-1.el7.noarch.rpm
cp rabbitmq_delayed_message_exchange-3.8.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.13/plugins

修改配置文件

#修改配置文件
cat << EOF > /etc/rabbitmq/rabbitmq.config
[
 {rabbit,
  [%%
   {tcp_listeners, [9936]},
   {heartbeat, 10},
   {channel_max, 1000},
   {disk_free_limit, "3GB"}
  ]},

 {kernel,
  [%% Sets the net_kernel tick time.
  ]},
 {rabbitmq_management,
  [%% Preload schema definitions from a previously exported definitions file. See
   {listener, [{port,9952}]}
  ]},
 {rabbitmq_shovel,
  [{shovels,
    [%% A named shovel worker.
    ]}
  ]},
 {rabbitmq_stomp,
  [%% Network Configuration - the format is generally the same as for the broker
  ]},
 {rabbitmq_mqtt,
  [%% Set the default user name and password. Will be used as the default login
  ]},
 {rabbitmq_amqp1_0,
  [%% Connections that are not authenticated with SASL will connect as this
  ]},
 {rabbitmq_auth_backend_ldap,
  [%%
  ]},
  {lager, [
  ]}
].
EOF

启动插件

#启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
rabbitmq-plugins  enable rabbitmq_management

system 配置

cat << EOF >/usr/lib/systemd/system/rabbitmq-server.service
[Unit]
Description= Rabbitmq Server ! ! !
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
LimitNOFILE=32768
NotifyAccess=all
ExecStart=/usr/sbin/rabbitmq-server -detached
ExecStop=/usr/sbin/rabbitmqctl shutdown
TimeoutStopSec=5
PrivateTmp=true
Restart=on-failure
RestartSec=10
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF
#启动服务
systemctl daemon-reload
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl status rabbitmq-server

用户配置

rabbitmqctl add_user pbsage pbsage123 \
&& rabbitmqctl set_user_tags pbsage administrator \
&& rabbitmqctl add_vhost /test
sleep 3
rabbitmqctl set_permissions -p / pbsage '.*' '.*' '.*' \
&& rabbitmqctl set_permissions -p /test pbsage '.*' '.*' '.*' \
&& echo "set_configure ok"

mongodb

安装包
mongodb-linux-x86_64-rhel70-4.4.28.tgz
依赖动态库文件
compat-openssl10-1.0.2o-4.el8.x86_64.rpm
yum install openssl  -y 
[root@bogon ~]# cd /usr/local
[root@bogon local]# mkdir MongoDB
[root@bogon MongoDB]# tar fx mongodb-linux-x86_64-rhel70-4.4.28.tgz 
[root@bogon MongoDB]# mv  mongodb-linux-x86_64-rhel70-4.4.28 mongodb
在MongoDB目录下新建两个目录data和logs用于存放数据和日志
[root@bogon MongoDB]# mkdir data/ logs/
[root@bogon MongoDB]# cd mongodb/bin/
[root@bogon bin]# 新增配置文件
cat > mongodb.conf << EOF
# 指定端口  默认27017
port=27017

# 绑定ip,默认是127.0.0.1
bind_ip=0.0.0.0

# 数据目录
dbpath=/usr/local/MongoDB/data 

# 日志目录
logpath=/usr/local/MongoDB/logs/mongodb.log 

# 设置后台运行
fork=true 

logappend=true 
maxConns=100 
journal=true 
storageEngine=wiredTiger
# 开启认证
# auth=true 
EOF
vi /etc/profile
# MongoDB
export PATH=/usr/local/MongoDB/mongodb/bin:$PATH

source /etc/profile

[root@bogon bin]#  cd /usr/local/MongoDB/mongodb/bin
[root@bogon bin]#  ./mongod -f mongodb.conf

system 管理

[root@bogon bin]# vim /etc/systemd/system/mongod.service
[Unit]
Description=mongod
After=network.target remote-fs.target nss-lookup.target  

[Service]
Type=forking  
ExecStart=/usr/local/MongoDB/mongodb/bin/mongod -f /usr/local/MongoDB/mongodb/bin/mongodb.conf
ExecStop=/usr/local/MongoDB/mongodb/bin/mongod -f /usr/local/MongoDB/mongodb/bin/mongodb.conf --shutdown 
PrivateTmp=false  
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl status mongod
systemctl start mongod
systemctl stop mongod
systemctl enable mongod.service 

创建管理员

image-20250112205338786

mongo
db.createUser({
  user: "admin",
  pwd: "TQnecOySwUO8P23o",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" }
  ]
})

开启认证

vim /usr/local/MongoDB/mongodb/bin/mongodb.conf 
# 开启认证
auth=true 

image-20250112205533991

Jdk 部署

tar xvf jdk-8u121-linux-x64.tar.gz  -C /data/application/app

vim /etc/profile 
###JDK
export JAVA_HOME=/data/application/app/jdk1.8.0_121/
export JRE_HOME=/data/application/app/jdk1.8.0_121/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

zookeeper 部署

/data/application/tools
tar xvf  apache-zookeeper-3.8.4-bin.tar.gz   -C /data/application/app/ 

配置文件zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/application/data/zookeeper
dataLogDir=/data/application/logs/zookeeper/log
clientPort=2181
autopurge.purgeInterval=1
autopurge.snapRetainCount=5

配置启动文件

vim /usr/lib/systemd/system/zookeeper.service

[Unit]
Description=Zookeeper Server Service
After=network.target

[Service]
Type=forking
UMask=0027
User=root
Group=root
ExecStart=/data/application/app/apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
ExecStop=/data/application/app/apache-zookeeper-3.8.4-bin/bin/zkServer.sh stop
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

vim /data/application/app/apache-zookeeper-3.8.4-bin/bin/zkEnv.sh

JAVA_HOME="/data/application/app/jdk1.8.0_121/"

启动

systemctl  start     zookeeper
systemctl  enable    zookeeper

kafka 部署

cd /data/application/tools/
tar xvf kafka_2.12-2.7.0.tgz  -C /data/application/app/
mkdir /data/application/data/kafka/kafka-log

vim server.properties

broker.id=1
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://kafka-1:9092,EXTERNAL://192.168.5.102:39092
advertised.listeners=INTERNAL://kafka-1:9092,EXTERNAL://192.168.5.102:39092
inter.broker.listener.name=INTERNAL
num.network.threads=9
num.io.threads=16
socket.send.buffer.bytes=1024000
socket.receive.buffer.bytes=1024000
socket.request.max.bytes=104857600
log.dirs=/data/application/data/kafka/kafka-log  
num.partitions=30
num.recovery.threads.per.data.dir=1
log.retention.hours=24
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181 
zookeeper.connection.timeout.ms=6000
delete.topic.enable = true
auto.create.topics.enable=true
message.max.bytes=20000000
replica.fetch.max.bytes=20485760
acks=1
log.cleanup.policy=delete 

详解

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://kafka-1:9092,EXTERNAL://192.168.5.102:39092
advertised.listeners=INTERNAL://kafka-1:9092,EXTERNAL://192.168.5.102:39092
inter.broker.listener.name=INTERNAL

#内部连接走的是kafka-1  外部走的是ip:39092 这样的话,内部需要走/etc/hosts 容器就需要写coredns 里面,这样kafka 更换ip,nacos 配置就修改的少了
 
 vim  /etc/hosts
 #
192.168.5.102  kafka-1
kafka JVM 调试

(机器实际内存的50% )

vim /data/application/app/kafka_2.12-2.7.0/bin/kafka-server-start.sh

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx8G -Xms8G"
fi

启动服务

/data/application/app/kafka_2.12-2.7.0/bin/kafka-server-start.sh -daemon 
/data/application/app/kafka_2.12-2.7.0/bin/kafka-server-start.sh  &

kafka 改为systemed 启动

vim /lib/systemd/system/kafka.service

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target kafka-zookeeper.service

[Service]
Type=simple
User=root
Group=root
Environment="JAVA_HOME=/data/application/app/jdk1.8.0_121/"
ExecStart=/data/application/app/kafka_2.12-2.7.0/bin/kafka-server-start.sh /data/application/app/kafka_2.12-2.7.0/config/server.properties 
ExecStop=/data/application/app/kafka_2.12-2.7.0/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
systemctl  start   kafka.service 
systemctl  enable   kafka.service

elasticsearch-7.17.7 安装

tar zxvf elasticsearch-7.17.7-linux-x86_64.tar.gz -C  /data/application/app/
mkdir -p /data/application/data/es/{data,logs}
cd /data/application/app/
cp config/elasticsearch.yml config/elasticsearch.yml-bak
cat << EOF > /data/application/app/elasticsearch-7.17.7/config/elasticsearch.yml
cluster.name: my-application
node.name: node
node.data: true
path.data: /data/application/data/es/data
path.logs: /data/application/data/es/logs
network.host: 0.0.0.0
http.port: 9967 #端口可自己修改
transport.tcp.port: 9968 #端口可自己修改
transport.tcp.compress: true
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["node"]
#不开启认证注释下面三行
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
EOF

vim  config/jvm.options 
 -Xms4g
 -Xmx4g
cat << EOF >> /etc/sysctl.conf 
vm.max_map_count=655360
EOF

sysctl -p
useradd es
chmod -R 755 /data/application/app/elasticsearch-7.17.7
chown -R es.es /data/application/app/elasticsearch-7.17.7
chmod -R 755 /data/application/data/es
chown -R es.es /data/application/data/es

安装插件

unzip elasticsearch-analysis-ik-7.17.7.zip -d  /data/application/app/elasticsearch-7.17.7/plugins/ik
unzip elasticsearch-analysis-stconvert-7.17.7.zip -d /data/application/app/elasticsearch-7.17.7/plugins/analysis-stconvert
unzip elasticsearch-analysis-pinyin-7.17.7.zip -d /data/application/app/elasticsearch-7.17.7/plugins/analysis-pinyin

system.

cat << EOF > /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch Server Service
After=network.target

[Service]
User=es
Group=es
LimitNOFILE=655350
LimitNPROC=100000
PermissionsStartOnly=true
Environment=JAVA_HOME=/data/application/app/jdk1.8.0_121
ExecStart=/data/application/app/elasticsearch-7.17.7/bin/elasticsearch
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

#启动服务
systemctl start elasticsearch
systemctl enable elasticsearch
systemctl status  elasticsearch

配置密码

./elasticsearch-setup-passwords interactive
#密码为elastic 
#验证
curl  localhost:9967  -uelastic:elastic

同义词配置

elasticsearch/synonym.txt
mkdir -p /data/application/app/elasticsearch-7.17.7/config/analysis
mv synonym.txt /data/application/app/elasticsearch-7.17.7/config/analysis

#创建索引
curl -s -XPUT -uelastic:elastic 'http://192.168.5.102:9967/test_index' -H 'Content-Type: application/json' -d'
{
	"settings": {
		"index": {
			"analysis": {
				"analyzer": {
					"synonym": {
						"tokenizer": "standard",
						"filter": ["lowercase", "synonyms_filter"]
					}
				},
				"filter": {
					"synonyms_filter": {
						"type": "synonym",
						"synonyms_path": "analysis/synonym.txt"
					}
				}
			}
		}
	}
}
'

#查看索引详情--索引不能删除
curl -s -XGET -u 'elastic:elastic' 'http://192.168.5.102:9967/test_index'
#查看全部索引
curl -X GET -u elastic:elastic "localhost:9967/_cat/indices?v"

kibana–es-web-ui

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
spec:
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
      - env:
        - name: ELASTICSEARCH_HOSTS
          value: http://192.168.100.46:9967
        - name: I18N.LOCALE
          value: zh-CN
        - name: ELASTICSEARCH_USERNAME
          value: elastic
        - name: ELASTICSEARCH_PASSWORD
          value: ToPs7YghnnzS
        image: registry.persagy.com/base/kibana:7.10.1
        imagePullPolicy: Always
        name: kibana
        ports:
        - containerPort: 5601
          protocol: TCP
        resources:
          limits:
            cpu: "1"
            memory: 1Gi
          requests:
            cpu: 50m
            memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  type: NodePort
  ports:
    - port: 5601
      nodePort: 31601
      targetPort: 5601
  selector:
    app: kibana