一、关闭防火墙
1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。
2、然后在下方可度以查看得到“active(running)”,此时说明防火墙已经被打开了。
3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。
4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。
5、再在命令行中输入命令“systemctl disable firewalld.service”命令,即可永久关闭防火墙。
二、定时任务清理buff cache
mkdir shell
cd shell
vi freemem.sh
# !/bin/bash
# clean buff/cache
# author: hobby
echo "Start cleaning buff/cache"
# 将所有未写的系统缓冲区写到磁盘中
sudo sync;sync;sync
#延迟5秒
sleep 5
# 释放页缓存
sudo echo 1 > /proc/sys/vm/drop_caches
# 释放dentries和inodes
sudo echo 2 > /proc/sys/vm/drop_caches
# 释放所有缓存
sudo echo 3 > /proc/sys/vm/drop_caches
echo "cleaning ending......"
crontab -e
*/10 * * * * /shell/freemem.sh
/sbin/service crond restart
/sbin/service crond status
三、配置yum
sudo yum install -y yum-utils
配置镜像
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
四、安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed099927
success后会有账号和密码如:
外网面板地址: http://58.216.172.250:8888/755ddd01
内网面板地址: http://10.8.58.100:8888/755ddd01
username: 15715250925
password: 520sl0920!
五、安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
设置开机自启动
sudo systemctl enable docker
docker -v
sudo docker images
配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://chqac97z.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装docker compose
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给docker-compose执行权限,运行命令:
chmod +x /usr/local/bin/docker-compose
六、宝塔安装MySQL
修改root账号密码为root
进入XShell,外网连接root账号
mysql -u 用户名 -p 密码
mysql -u root -p root
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
宝塔开放3306端口
七、宝塔安装Redis
bind:0.0.0.0
protected-mode no
appendonly yes
八、宝塔安装MongoDB
BindIP 0.0.0.0
九、docker安装nacos
docker pull nacos/nacos-server:1.4.1
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.4.1
mkdir /home/docker/nacos
docker container cp nacos:/home/nacos/conf /home/docker/nacos/
docker container cp nacos:/home/nacos/logs /home/docker/nacos/
docker container cp nacos:/home/nacos/init.d /home/docker/nacos/
docker stop nacos
docker rm nacos
vi /home/docker/nacos/init.d/custom.properties
#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
management.endpoints.web.exposure.include=*
# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
vi /home/docker/nacos/conf/application.properties
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
spring.datasource.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
db.url.0=jdbc:mysql://10.8.58.100:3306/nacos_config?characterEncoding=utf8&connectTimeout=5000&socketTimeout=8000&autoReconnect=true
db.user=root
db.password=root
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### The token expiration in seconds:
nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir
server.tomcat.basedir=
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
创建nacos_config数据库
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(64) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`src_user` text,
`src_ip` varchar(20) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY,
`password` varchar(500) NOT NULL,
`enabled` boolean NOT NULL
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL,
`role` varchar(50) NOT NULL,
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL,
`resource` varchar(512) NOT NULL,
`action` varchar(8) NOT NULL,
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
docker run -d -p 8848:8848 -e MODE=standalone -v /home/docker/nacos/init.d:/home/nacos/init.d -v /home/docker/nacos/logs:/home/nacos/logs -v /home/docker/nacos/conf:/home/nacos/conf --restart always --name nacos nacos/nacos-server:1.4.1
十、docker搭建ELK
docker pull elasticsearch:7.6.2
docker run -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” --name elasticsearch elasticsearch:7.6.2
docker run -d --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.6.2
docker exec -it elasticsearch /bin/bash
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
docker pull kibana:7.6.2
mkdir -p /home/docker/elk/config
vi /home/docker/elk/config/kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0.0.0.0"
# elasticsearch的地址,多个使用逗号分割
elasticsearch.hosts: [ "http://10.8.58.100:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
# 语言选择为中文
i18n.locale: "zh-CN"
docker run -d --restart=always --name kibana -v /home/docker/elk/config/kibana.yml:/usr/share/kibana/config/kibana.yml -p 5601:5601 kibana:7.6.2
docker pull logstash:7.6.2
vi /home/docker/elk/config/logstash.conf
input {
tcp{
port => 5044
codec => json_lines
}
}
filter {
mutate {
remove_field => ["logLevel", "stdoutOpen", "useLogStash", "logStashDestination"]
}
}
output {
#stdout {
# codec => rubydebug
#}
elasticsearch {
hosts => ["10.8.58.100:9200"]
index => "logstash-%{[env]}-%{[server_name]}-%{+YYYY.MM.dd}"
}
}
vi /home/docker/elk/config/logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://10.8.58.100:9200" ]
docker run -di --restart=always -p 5044:5044 -v /home/docker/elk/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /home/docker/elk/config/logstash.yml:/usr/share/logstash/config/logstash.yml --name logstash logstash:7.6.2
Spring Boot中集成logstash
下面以springboot中使用logback作为日志处理工具;为了和各个环境兼容,我们采用动态日志配置的方式,因此需要挺添加如下依赖:
<!-- logstash需要的包 -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
</dependency>
<!-- 动态日志配置功能需要的包 -->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
</dependency>
配置文件application.yml
spring:
application:
name: elk-template
profiles:
active: dev
log-config:
# 日志级别
level: INFO
# 控制台日志是否开启
stdout: true
logstash:
# 是否启用logstash记录日志
enable: true
# logstash 地址
destination: 192.168.56.105:5044
日志配置文件logback-spring.xml配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty scope="context" name="server_name" source="spring.application.name"/>
<springProperty scope="context" name="env" source="spring.profiles.active"/>
<springProperty scope="context" name="logLevel" source="log-config.level" defaultValue="INFO"/>
<springProperty scope="context" name="stdoutOpen" source="log-config.stdout" defaultValue="true"/>
<springProperty scope="context" name="useLogStash" source="log-config.logstash.enable" defaultValue="false"/>
<springProperty scope="context" name="logStashDestination" source="log-config.logstash.destination" defaultValue=""/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}.%M.%L) - %highlight(%msg) %n</pattern>
</layout>
</appender>
<if condition='property("useLogStash").equals("true")'>
<then>
<!--log stash 输出-->
<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${logStashDestination}</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<!-- 打印行号、方法名,官方不建议在生产环境开启此配置,默认为false(关闭),具网友测试开启后的耗时是未开启的大约360倍的时间(业务量小的时候可以忽略) -->
<!-- <includeCallerData>true</includeCallerData> -->
<!-- 设置时区-->
<timeZone>UTC</timeZone>
<!-- 日期格式化-->
<!-- <timestampPattern>yyyy-MM-dd'T'HH:mm:ss.SSS</timestampPattern>-->
<!-- 添加自定义属性,这里的server_name是服务名-->
<!-- <customFields>{"server_name":"demo-server"}</customFields> -->
</encoder>
<queueSize>16384</queueSize>
<!-- 设置超时时间, 默认没有,使用集群的时候可以加上-->
<!--<writeTimeout>30 seconds</writeTimeout>-->
</appender>
<root level='${logLevel}'>
<if condition='property("stdoutOpen").equals("true")'>
<then>
<appender-ref ref="STDOUT"/>
</then>
</if>
<appender-ref ref="STASH"/>
</root>
</then>
<else>
<root level='${logLevel}'>
<if condition='property("stdoutOpen").equals("true")'>
<then>
<appender-ref ref="STDOUT"/>
</then>
</if>
</root>
</else>
</if>
</configuration>
十一、docker安装portainer
docker run -d -p 9999:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
十二、docker安装zookeeper
docker pull zookeeper
docker run -d --name zookeeper -p 2181:2181 -t zookeeper
十三、docker安装kafka
单机方式
docker pull wurstmeister/kafka
docker run -d --name kafka
-p 9092:9092
-e KAFKA_BROKER_ID=0
-e KAFKA_ZOOKEEPER_CONNECT=10.8.58.100:2181
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.8.58.100:9092
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
十四、docker安装minio
docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z
docker run -p 9000:9000 --name minio -di --restart=always
-e “MINIO_ROOT_USER=admin”
-e “MINIO_ROOT_PASSWORD=admin123456”
-v /home/docker/minio/data:/data
-v /home/docker/minio/config:/root/.minio
minio/minio:RELEASE.2021-06-17T00-10-46Z server /data
十五、docker安装Skywalking
docker pull apache/skywalking-oap-server:8.6.0-es7
docker pull apache/skywalking-ui:8.6.0
docker run --name skywalking-oap --restart always -d
–restart=always
-e TZ=Asia/Shanghai
-p 12800:12800
-p 11800:11800
-e SW_STORAGE=elasticsearch7
-e SW_STORAGE_ES_CLUSTER_NODES=10.8.58.100:9200
apache/skywalking-oap-server:8.6.0-es7
docker run --name skywalking-ui --restart always -p 9898:8080 -d -e TZ=Asia/Shanghai -e SW_OAP_ADDRESS=10.8.58.100:12800 -v /etc/localtime:/etc/localtime:ro apache/skywalking-ui:8.6.0
下载skywalking-agent.jar
skywalking-agent
解压并且在agent文件夹下
mkdir logs
touch logs/skywalking-api.log
chmod -R 777 logs/
项目启动时加上
-javaagent:/home/mydata/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxxtest -Dskywalking.collector.backend_service=127.0.0.1:11800
十六、docker安装RocketMQ
所属集群名称,如果节点较多可以配置多个
touch rocketmq/broker.conf
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 10.8.58.100
docker run -d -p 9876:9876 --name rocketmq-server foxiswho/rocketmq:server
docker run -d -p 10911:10911 -p 10909:10909\
--name rocketmq-broker --link rocketmq-server:namesrv\
--privileged=true\
-e "NAMESRV_ADDR=172.17.0.1:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
-v /home/docker/rocketmq/broker.conf:/etc/rocketmq/broker.conf \
foxiswho/rocketmq:broker
docker run -d --name rocketmq-console -p 7777:8080 --link rocketmq-server:namesrv\
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.17.0.1:9876\
-Dcom.rocketmq.sendMessageWithVIPChannel=false"\
-t styletang/rocketmq-console-ng
十七、docker安装seata
docker pull seataio/seata-server:1.4.2
docker run --name seata-server -p 8091:8091 -d seataio/seata-server:1.4.2
docker cp seata-server:/seata-server /home/docker/seata
docker stop seata-server
docker rm seata-server
vi /home/docker/seata/seata-server/resources/registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "10.8.58.100:8848"
group = "SEATA_GROUP"
namespace = "14da8c41-d4d9-4e37-8634-1957d42828a8"
cluster = "default"
username = "nacos"
password = "nacos"
}
eureka {
serviceUrl = "http://localhost:8761/eureka"
application = "default"
weight = "1"
}
redis {
serverAddr = "localhost:6379"
db = 0
password = ""
cluster = "default"
timeout = 0
}
zk {
cluster = "default"
serverAddr = "127.0.0.1:2181"
sessionTimeout = 6000
connectTimeout = 2000
username = ""
password = ""
}
consul {
cluster = "default"
serverAddr = "127.0.0.1:8500"
aclToken = ""
}
etcd3 {
cluster = "default"
serverAddr = "http://localhost:2379"
}
sofa {
serverAddr = "127.0.0.1:9603"
application = "default"
region = "DEFAULT_ZONE"
datacenter = "DefaultDataCenter"
cluster = "default"
group = "SEATA_GROUP"
addressWaitTime = "3000"
}
file {
name = "file.conf"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "10.8.58.100:8848"
namespace = "14da8c41-d4d9-4e37-8634-1957d42828a8"
group = "SEATA_GROUP"
username = "nacos"
password = "nacos"
dataId = "seataServer.properties"
}
consul {
serverAddr = "127.0.0.1:8500"
aclToken = ""
}
apollo {
appId = "seata-server"
## apolloConfigService will cover apolloMeta
apolloMeta = "http://192.168.1.204:8801"
apolloConfigService = "http://192.168.1.204:8080"
namespace = "application"
apolloAccesskeySecret = ""
cluster = "seata"
}
zk {
serverAddr = "127.0.0.1:2181"
sessionTimeout = 6000
connectTimeout = 2000
username = ""
password = ""
nodePath = "/seata/seata.properties"
}
etcd3 {
serverAddr = "http://localhost:2379"
}
file {
name = "file.conf"
}
}
vi /home/docker/seata/seata-server/resources/file.conf
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## rsa decryption public key
publicKey = ""
## file store property
file {
## store location dir
dir = "sessionStore"
# branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
maxBranchSessionSize = 16384
# globe session size , if exceeded throws exceptions
maxGlobalSessionSize = 512
# file buffer size , if exceeded allocate new buffer
fileWriteBufferCacheSize = 16384
# when recover batch read size
sessionReloadReadSize = 100
# async, sync
flushDiskMode = async
}
## database store property
db {
## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
datasource = "druid"
## mysql/oracle/postgresql/h2/oceanbase etc.
dbType = "mysql"
driverClassName = "com.mysql.jdbc.Driver"
## if using mysql to store the data, recommend add rewriteBatchedStatements=true in jdbc connection param
url = "jdbc:mysql://10.8.58.100:3306/seata_config?rewriteBatchedStatements=true"
user = "root"
password = "root"
minConn = 5
maxConn = 100
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
## redis store property
redis {
## redis mode: single、sentinel
mode = "single"
## single mode property
single {
host = "127.0.0.1"
port = "6379"
}
## sentinel mode property
sentinel {
masterName = ""
## such as "10.28.235.65:26379,10.28.235.65:26380,10.28.235.65:26381"
sentinelHosts = ""
}
password = ""
database = "0"
minConn = 1
maxConn = 10
maxTotal = 100
queryLimit = 100
}
}
创建seata_config数据库,导入sql
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`status` TINYINT NOT NULL,
`application_id` VARCHAR(32),
`transaction_service_group` VARCHAR(32),
`transaction_name` VARCHAR(128),
`timeout` INT,
`begin_time` BIGINT,
`application_data` VARCHAR(2000),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
`branch_id` BIGINT NOT NULL,
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`resource_group_id` VARCHAR(32),
`resource_id` VARCHAR(256),
`branch_type` VARCHAR(8),
`status` TINYINT,
`client_id` VARCHAR(64),
`application_data` VARCHAR(2000),
`gmt_create` DATETIME(6),
`gmt_modified` DATETIME(6),
PRIMARY KEY (`branch_id`),
KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
`row_key` VARCHAR(128) NOT NULL,
`xid` VARCHAR(128),
`transaction_id` BIGINT,
`branch_id` BIGINT NOT NULL,
`resource_id` VARCHAR(256),
`table_name` VARCHAR(32),
`pk` VARCHAR(36),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`row_key`),
KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE IF NOT EXISTS `undo_log`
(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'increment id',
`branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(100) NOT NULL COMMENT 'global transaction id',
`context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
`log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` DATETIME NOT NULL COMMENT 'create datetime',
`log_modified` DATETIME NOT NULL COMMENT 'modify datetime',
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';
vi /home/docker/seata/config/config.txt
vi /home/docker/seata/config/sh/nacos-config.sh
sh nacos-config.sh -h 10.8.58.100 -p 8848 -g SEATA_GROUP -t 14da8c41-d4d9-4e37-8634-1957d42828a8 -u nacos -w nacos
参数说明:
-h:配置中心地址
-p:配置中心端口
-g:配置中心的分组
-t:配置中心的命名空间id
-u:配置中心naocs用户名
-w:配置中心Naocs密码
docker run -d --restart always --name seata-server -p 8091:8091 -v /home/docker/seata/seata-server:/seata-server -v /etc/localtime:/etc/localtime -e SEATA_IP=10.8.58.100 -e SEATA_PORT=8091 seataio/seata-server:1.4.2
十八、docker安装xxl-job-admin
docker pull xuxueli/xxl-job-admin:2.3.0
docker run -d \
-e PARAMS="--spring.datasource.url=jdbc:mysql://10.8.58.100:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
--spring.datasource.username=root \
--spring.datasource.password=root \
--spring.datasource.driver-class-name=com.mysql.jdbc.Driver" \
-p 8086:8080 \
-v /home/docker/xxl_job/applogs:/data/applogs \
--name xxl-job-admin \
-d xuxueli/xxl-job-admin:2.3.0
十九、docker安装sentinel-dashboard
docker pull bladex/sentinel-dashboard
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard
二十、docker安装RabbitMQ
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 15672:15672 -p 5672:5672 rabbitmq:management
https://www.rabbitmq.com/community-plugins.html
docker cp rabbitmq_delayed_message_exchange-3.9.0.ez rabbitmq:/plugins
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
docker restart rabbitmq