目录
搭建docker
1.2安装yum工具
1.3更新阿里镜像源
1.4下载docker
1.5关闭防火墙
1.6启动docker
1.7查看docker版本
1.8配置阿里云镜像
1.8.1 创建文件夹
1.8.2在文件夹内新建一个daemon.json文件
1.8.3重载文件
1.9重启docker
2安装MySQL
3安装nacos
3.1拉取nacos镜像并启动
3.2启动nacos命令
3.3命令敲完了,检查一下Nacos运行状态.
4.安装redis集群及哨兵
redis版本
主从结构
启动主redis
启动1号从redis
启动2号从redis
查看主从信息info replication
哨兵 sentinel
哨兵1号
启动2号哨兵
启动3号哨兵
查看哨兵情况
哨兵测试
哨兵常见问题
配置文件映射
哨兵myid
安装:elasticsearch
5.1下载镜像并运行
5.2拉取镜像
5.3启动镜像
5.4如出现异常可查看容器异常日志
5.4.1查看容器异常日志
5.4.5然后重新启动容器
部署kibana
6.1下载kibana
6.2部署
6.3 kibana启动一般比较慢,需要多等待一会,可以通过命令:
7.安装IK分词器
7.1 进入容器内部
7.2 在线下载并安装
7.3退出
7.4重启容器
7.5查看数据卷目录
显示结果:
7.6 解压缩分词器安装包
7.7.重启容器
查看es日志
7.8测试:
8.安装Rabbitmq第一步:
8.1拉取镜像:docker pull rabbitmq
8.2查看镜像:docker images
8.3第二步:
创建并启动RabbitMQ容器:
8.4第三步:
8.5第四步:
8.6打开rabbitmq管理界面。点击channels,会报如下错误:
8.6.1进入rabbitmq容器
8.6.2进入容器后,cd到以下路径
8.6.3修改 management_agent.disable_metrics_collector = false
8.6.4退出容器
8.6.5重启rabbitmq容器
在Linux系统中安装并配置maven详细教程
9.kafka安装配置
虚拟配置
搭建docker
Docker容器化解决方案
1.1.卸载(可选)
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
docker-ce
1.2安装yum工具
yum install -y yum-utils
device-mapper-persistent-data
lvm2 --skip-broken
1.3更新阿里镜像源
# 设置docker镜像源
yum-config-manager
--add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g'
/etc/yum.repos.d/docker-ce.repo
yum makecache fast
1.4下载docker
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功
1.5关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
#查看是否关闭防火墙
systemctl status firewalld
1.6启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
1.7查看docker版本
docker -v
1.8配置阿里云镜像
1.8.1 创建文件夹
sudo mkdir -p /etc/docker
1.8.2在文件夹内新建一个daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://akchsmlh.mirror.aliyuncs.com"]
}
EOF
1.8.3重载文件
sudo systemctl daemon-reload
1.9重启docker
systemctl restart docker # 重启docker服务
2安装MySQL
docker run --name mysql -p 3306:3306 -v /server/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /server/mysql/data:/var/lib/mysql -v /server/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD= 123456--restart=always -d mysql:5.7
将安装好的MySQL与Navicat进行链接 用户名:root 密码:123456
可添加云盘ssh加密
3安装nacos
3.1拉取nacos镜像并启动
首先,我们先启动并检查docker运行状态
systemctl start docker ---启动docker
systemctl restart docker ---重启docker
systemctl status docker ---检测docker运行状态
docker pull nacos/nacos-server:v2.1.2可 (:1.2.1 )指定版本号 拉取nacos服务
3.2启动nacos命令
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server:v2.1.2
3.3命令敲完了,检查一下Nacos运行状态.
我们使用7.0.2版本。用到的服务器上的redis最好统一版本。
docker pull redis:7.0.2
官网找对应的安装包 Index of /releases/
得到redis.conf和sentinel.conf文件
一个主redis,2个从redis。它们使用不同的3个端口,注意检查防火墙的设置。
启动主redis
主redis,即master,启动主redis容器
docker run --restart=always -p 6379:6379 --name redis-CNT-MASTER -d redis:7.0.2 redis-server --requirepass 778899 --masterauth 778899
-
指定服务器的6379对应redis容器里的6379端口
-
设定密码(可以不设置)
-
从redis连上来需要的密码(可以不设置)
进入容器查看状态
docker exec -it redis-CNT-MASTER redis-cli 127.0.0.1:6379> auth 778899 OK 127.0.0.1:6379> info replication
启动
从redis使用配置的方式
文件结构
├── data └── redis.conf
1号从redis的redis.conf
slaveof x.x.x.x 6379 replica-announce-ip x.x.x.x replica-announce-port 6380 protected-mode no port 6379 masterauth 123456 requirepass 123456 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize no pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 16 always-show-logo no set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb rdb-del-sync-files no dir https://blog.csdn.net/Littlemonster4/article/details/ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync yes repl-diskless-sync-delay 5 repl-diskless-sync-max-replicas 0 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no lazyfree-lazy-user-del no lazyfree-lazy-user-flush no oom-score-adj no oom-score-adj-values 0 200 800 disable-thp yes appendonly yes appendfilename "appendonly.aof" appenddirname "appendonlydir" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes aof-timestamp-enabled no slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-listpack-entries 512 hash-max-listpack-value 64 list-max-listpack-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-listpack-entries 128 zset-max-listpack-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes jemalloc-bg-thread yes
启动1号从redis
docker run --restart=always -p 6380:6379 --name redis-slave1 -v /home/reids/conf/redis-slave1/redis.conf:/etc/redis/redis.conf -v /home/reids/conf/redis-slave1/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf
启动
配置文件可以复制1号的。然后记得修改它的宣称ip和端口
replica-announce-ip x.x.x.x replica-announce-port 6381 # 2号用的端口
启动2号从redis
docker run --restart=always -p 6381:6379 --name redis-slave2 -v /home/reids/conf/redis-slave2/redis.conf:/etc/redis/redis.conf -v /home/reids/conf/redis-slave2/data:/data -d redis:7.0.2 redis-server /etc/redis/redis.conf
查看主从信息
进入主redis容器,输入,后,检查情况
例如进入主redis容器查看。此时。slave的ip和port应该和它们宣称的一致。
role查看从节点
在主redis中,在1号和2号从redis里可以看到效果。
我们会启动3个新的redis容器,即3个哨兵。这3个哨兵都监听主redis。
哨兵1号
新建一个哨兵1号用的目录
├── conf │ └── sentinel.conf └── data
先创建conf文件在编辑配置文件 sentinel.conf
port 26379 dir "/tmp" sentinel monitor master001 119.29.224.177 6379 2 sentinel auth-pass master001 123456 sentinel down-after-milliseconds master001 30000 sentinel parallel-syncs master001 1 sentinel failover-timeout master001 180000 sentinel deny-scripts-reconfig yes
-
指定的是哨兵容器里自己的端口
-
指定了要监听的主master的ip和端口,最后那个表示需要2个哨兵投票
-
是我们给主redis起的名字,后面都用这个
启动1号哨兵
docker run --restart=always -p 16379:16379 --name redis-sentinel --privileged=true -v /home/reids/conf/sentinel1/conf:/usr/local/etc/redis/conf/ -d redis:7.0.2 redis-sentinel /usr/local/etc/redis/conf/sentinel.conf
进入容器后,可以查看相关信息。需要指定端口
root@aa8d208546d1:/data# redis-cli -p 26379 127.0.0.1:26379> sentinel master master001
查看服务器上1号哨兵的 sentinel.conf ,发现多了一些内容,是redis哨兵写进来的
# Generated by ConFIG REWRITE latency-tracking-info-percentiles 50 99 99.9 user default on nopass ~* &* +@all sentinel myid b43e361ff80b8f9106cb1d4bb59421aa909ac370 sentinel config-epoch master001 0 sentinel leader-epoch master001 0 sentinel current-epoch 0 sentinel known-replica master001 x.x.x.1 6380 sentinel known-replica master001 x.x.x.1 6381
启动
配置2号的路径。
sentinel.conf配置内容和前面一样,启动时候端口用
docker run --restart=always -p 26380:26379 --name redis-sentinel2 --privileged=true -v /home/reids/conf/sentinel2/conf:/usr/local/etc/redis/conf/ -d redis:7.0.2 redis-sentinel /usr/local/etc/redis/conf/sentinel.conf
启动
同理,路径用3号自己的
启动时候端口用
docker run --restart=always -p 36380:36379 --name redis-sentinel3 --privileged=true -v /home/reids/conf/sentinel3/conf:/usr/local/etc/redis/conf/ -d redis:7.0.2 redis-sentinel /usr/local/etc/redis/conf/sentinel.conf
查看哨兵情况
进入哨兵redis容器查看情况
[root@VM-12-6-centos conf]# docker exec -it 68e45f0790b0 bash root@5dc0468fb71f:/data# redis-cli -p 26379 127.0.0.1:26379> sentinel master master001
-
表示从redis的数量
-
表示除自己外的哨兵数量
哨兵测试
停掉主redis容器
docker stop redis-CNT-MASTER
过一会等选出新的主redis。然后再启动刚才停掉的容器。查看信息,
docker start redis-CNT-MASTER //进入redis服务端 docker exec -it redis-CNT-MASTER redis-cli //登录 auth 123456 info Replication
发现它是
哨兵常见问题
配置文件映射
指定配置文件sentinel.conf映射到容器内时,直接了使用文件映射。 这么做有可能导致哨兵没有写入配置文件的权限, 查看log会看到:
WARNING: Sentinel was not able to save the new configuration on disk!!!: Device or resource busy.
解决方法是使用目录映射。像上面那样:
哨兵myid
主从与哨兵redis都启动后,看起来OK了。但stop掉主redis后,哨兵并没有选出新的主redis。
有一种可能是哨兵改写的sentinel.conf里使用了相同的。
grep -nr myid sentinel1/conf/sentinel.conf:11:sentinel myid b43e361ff80b8f9106cb1d4bb59421aa909ac370 sentinel2/conf/sentinel.conf:11:sentinel myid e19342addbcdd8d034c1e91ed74ff94a7aec2e2a sentinel3/conf/sentinel.conf:11:sentinel myid d0393d72f69556f2047cf8c84cfa20f4df6ed4ff
解决方法是stop掉那个哨兵,删掉那行,然后重启哨兵。它会自动生成新的。
-
安装:elasticsearch
5.1下载镜像并运行
docker network create es-net
5.2拉取镜像
docker pull elasticsearch:7.12.1
5.3启动镜像
docker run -d
--name es
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
-e "discovery.type=single-node"
-v es-data:/usr/share/elasticsearch/data
-v es-plugins:/usr/share/elasticsearch/plugins
--privileged
--network es-net
-p 9200:9200
-p 9300:9300
elasticsearch:7.12.1
5.4如出现异常可查看容器异常日志
5.4.1查看容器异常日志
docker ps -a 可以查看到刚退出的elasticsearch容器,复制容器id
通过docker logs -f 容器id查看日志,可以看到提示空间不足
jvm分配的内存大于系统可用内存数,所以没有足够的空间分配新空间了
5.4.2使用命令find / -name jvm.options找到jvm.options文件位置
5.4.3通过vim 文件位置命令进入该文件
找到xms参数位置,将分配空间修改小一些,减小值到系统可用的值,如
-Xms512m
-Xmx512m
有可能报max_map_count [65530] is too low之类的错误,需要重置max_map_count大小
如sysctl -w vm.max_map_count=262144
5.4.4查看max_map_count
sysctl -a|grep vm.max_map_count
5.4.5然后重新启动容器
systemctl restart docker
-
部署kibana
6.1下载kibana
docker pull kibana:7.12.1
6.2部署
docker run -d
--name kibana
-e ELASTICSEARCH_HOSTS=http://你的虚拟机地址:9200
--network=es-net
-p 5601:5601
kibana:7.12.1
6.3 kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
7.安装IK分词器
7.1 进入容器内部
docker exec -it es /bin/bash
7.2 在线下载并安装
https://blog.csdn.net/Littlemonster4/article/details/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
7.3退出
exit
7.4重启容器
docker restart es
7.5查看数据卷目录
docker volume inspect es-plugins
显示结果:
[
{
"CreatedAt": "2022-05-06T10:06:34+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
"Name": "es-plugins",
"Options": null,
"Scope": "local"
}
]
7.6 解压缩分词器安装包
下载位置: https://www.aliyundrive.com/s/SzSsbiB5vi2
提取码: jl26
7.7上传到es容器的插件数据卷中
也就是`/var/lib/docker/volumes/es-plugins/_data `:
7.7.重启容器
docker restart es
查看es日志
docker logs -f es
7.8测试:
IK分词器包含两种模式:ik_smart:最少切分 ik_max_word:最细切分
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "黑马程序员学习java太棒了"
}
8.安装Rabbitmq第一步:
8.1拉取镜像:docker pull rabbitmq
8.2查看镜像:docker images
8.3第二步:
创建并启动RabbitMQ容器:
docker run -id --hostname myrabbit --name rabbitmq1 -p 15672:15672 -p 5672:5672 rabbitmq
8.4第三步:
进入容器交互页面:docker exec -it rabbitmq1 /bin/bash
8.5第四步:
在进入的容器里面下载插件:rabbitmq-plugins enable rabbitmq_management
8.6打开rabbitmq管理界面。点击channels,会报如下错误:
Stats in management UI are disabled on this node
8.6.1进入rabbitmq容器
docker exec -it 容器ID /bin/bash
8.6.2进入容器后,cd到以下路径
cd /etc/rabbitmq/conf.d/
8.6.3修改 management_agent.disable_metrics_collector = false
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
8.6.4退出容器
exit
8.6.5重启rabbitmq容器
docker restart 容器ID
在Linux系统中安装并配置maven详细教程
1、安装wget命令
如果需要通过使用wget命令,直接通过网络下载maven安装包时,需要在linux系统中安装wget命令
yum -y install wget
- 下载maven安装包在/usr/local/下创建一个maven文件:
mkdir /usr/local/maven
切换到安装目录,即新建的文件中:
cd /usr/local/maven
下载安装:wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
#解压到指定的目录
tar -zxvf apache-maven-3.8.6-bin.tar.gz
- 事先创建本地镜像库:
进入文件夹 cd /usr/local
在其目录先创建文件夹 mkdir repositories
2.设置本地镜像库
在55行
<localRepository>/usr/local/repositories</localRepository>
- 在159行的标签为</mirrors>前添加如下阿里云镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
#安装编辑软件vim
yum install vim
#打开文件
vim /etc/profile
#配置环境变量,
#将下面的内容复制到文件,保存
export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.6
export PATH=${MAVEN_HOME}/bin:${PATH}
#设置好Maven的路径之后,需要运行下面的命令使其生效
source /etc/profile
4、验证maven是否安装成功
mvn -version
Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,所以安装Kafka之前必须先安装zookeeper
Docker安装zookeeper
9.1.下载镜像:
docker pull zookeeper:3.4.14
9.2.创建容器
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14
9.3.Docker安装kafka
下载镜像:
docker pull wurstmeister/kafka:2.12-2.3.1
创建容器
docker run -d --name kafka
--env KAFKA_ADVERTISED_HOST_NAME=虚拟机地址
--env KAFKA_ZOOKEEPER_CONNECT=虚拟机地址:2181
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://虚拟机地址:9092
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"
--net=host wurstmeister/kafka
可视化工具安装
docker search kafka-manager
拉取并运行可视化工具
docker run -it -d --name kafka-manager -p 9001:9000 -e ZK_HOSTS="虚拟机ip地址:2181" sheepkiller/kafka-manager:latest
浏览器中访问 http://127.0.0.1:9001 可以进入到kafka-manager的可视化界面