linux安装搭建配置docker,mysql,nacos,redis哨兵集群,kafka,elasticsearch,kibana,IK分词器,安装Rabbitmq,安装并配置maven

目录

搭建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运行状态.

4.安装redis集群及哨兵

redis版本

我们使用7.0.2版本。用到的服务器上的redis最好统一版本。

docker pull redis:7.0.2

官网找对应的安装包 Index of /releases/

得到redis.confsentinel.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-cliauth后,检查情况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

  1. 安装: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

  1. 部署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 在线下载并安装

./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

  1. 下载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

  1. 事先创建本地镜像库:

进入文件夹 cd /usr/local

在其目录先创建文件夹 mkdir repositories

2.设置本地镜像库

在55行

<localRepository>/usr/local/repositories</localRepository>

  1. 在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

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的可视化界面

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值