目录
6.3 kibana启动一般比较慢,需要多等待一会,可以通过命令:
8.6打开rabbitmq管理界面。点击channels,会报如下错误:
8.6.3修改 management_agent.disable_metrics_collector = false
虚拟配置
搭建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运行状态.
4.安装redis集群及哨兵
redis版本
我们使用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:6379
指定服务器的6379对应redis容器里的6379端口 -
--requirepass 778899
设定密码(可以不设置) -
--masterauth 778899
从redis连上来需要的密码(可以不设置)
进入容器查看状态
docker exec -it redis-CNT-MASTER redis-cli 127.0.0.1:6379> auth 778899 OK 127.0.0.1:6379> info replication
启动1号从redis
从redis使用配置的方式
文件结构 /home/reids/conf/redis-slave1
├── 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 ./ 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
启动2号从redis
配置文件可以复制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
查看主从信息info replication
进入主redis容器,输入docker exec -it *id* redis-cli
,auth
后,检查情况info replication
例如进入主redis容器查看。此时connected_slaves:2
。slave的ip和port应该和它们宣称replica-announce
的一致。
role查看从节点
在主redis中set a 123
,在1号和2号从redis里get a
可以看到效果。
哨兵 sentinel
我们会启动3个新的redis容器,即3个哨兵。这3个哨兵都监听主redis。
哨兵1号
新建一个哨兵1号用的目录 /home/reids/conf/sentinel1
├── 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
-
port 6411
指定的是哨兵容器里自己的端口 -
sentinel monitor
指定了要监听的主master的ip和端口,最后那个2
表示需要2个哨兵投票 -
master001
是我们给主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
进入容器后,可以查看相关信息。redis-cli
需要指定端口-p 26379
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号哨兵
配置2号的路径/home/dapp/projects/rustfisher/sentinel2
。
sentinel.conf配置内容和前面一样,启动时候端口用-p 26380:26379
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号哨兵
同理,路径用3号自己的 /home/dapp/projects/rustfisher/sentinel3/conf
启动时候端口用-p 36380:36379
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
-
num-slaves
表示从redis的数量 -
num-other-sentinels
表示除自己外的哨兵数量
哨兵测试
停掉主redis容器
docker stop redis-CNT-MASTER
过一会等选出新的主redis。然后再启动刚才停掉的容器redis-CNT-MASTER
。查看信息,
docker start redis-CNT-MASTER //进入redis服务端 docker exec -it redis-CNT-MASTER redis-cli //登录 auth 123456 info Replication
发现它是role:slave
哨兵常见问题
配置文件映射
指定配置文件sentinel.conf映射到容器内时,直接了使用文件映射。 这么做有可能导致哨兵没有写入配置文件的权限, 查看log会看到:
WARNING: Sentinel was not able to save the new configuration on disk!!!: Device or resource busy.
解决方法是使用目录映射。像上面那样: -v /home/dapp/projects/rustfisher/sentinel2/conf:/usr/local/etc/redis/conf/
哨兵myid
主从与哨兵redis都启动后,看起来OK了。但stop掉主redis后,哨兵并没有选出新的主redis。
有一种可能是哨兵改写的sentinel.conf里使用了相同的myid
。
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掉那个哨兵,删掉myid
那行,然后重启哨兵。它会自动生成新的myid
。
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
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 在线下载并安装
./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行
- 在159行的标签为前添加如下阿里云镜像
#安装编辑软件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
9.kafka安装配置
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的可视化界面
评论记录:
回复评论: