上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin116小时前

目录

搭建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.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查看从节点

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

    在主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分配的内存大于系统可用内存数,所以没有足够的空间分配新空间了

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

        5.4.2使用命令find / -name jvm.options找到jvm.options文件位置

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

        5.4.3通过vim 文件位置命令进入该文件

        找到xms参数位置,将分配空间修改小一些,减小值到系统可用的值,如

        -Xms512m

        -Xmx512m

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

        有可能报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 `:

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

        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行

        /usr/local/repositories

        1. 在159行的标签为前添加如下阿里云镜像

            alimaven

            aliyun maven

            http://maven.aliyun.com/nexus/content/groups/public/

            central

        #安装编辑软件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的可视化界面

网友评论

搜索
最新文章
热门文章
热门标签