中间件单机版部署
中间件单机版部署
目录规划
规划 | 目录 | 备注 |
---|---|---|
应用程序安装路径 | /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
创建管理员
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
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