GVKun编程网logo

docker安装redis、mongodb、tomcat、rabbitmq(Docker安装包下载)

20

想了解docker安装redis、mongodb、tomcat、rabbitmq的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于Docker安装包下载的相关问题,此外,我们还将为您介绍关于C

想了解docker安装redis、mongodb、tomcat、rabbitmq的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于Docker安装包下载的相关问题,此外,我们还将为您介绍关于Centos 7.2 安装配置 Nginx、PHP7、Mysql、JDK、Tomcat、Redis、RAP、CentOS-Docker安装RabbitMQ(单点)、CentOS-Docker安装RabbitMQ集群(rabbitmq:3.7.16-management)、CentOS-Docker安装RabbitMQ集群(rabbitmq:3.8.9-management)的新知识。

本文目录一览:

docker安装redis、mongodb、tomcat、rabbitmq(Docker安装包下载)

docker安装redis、mongodb、tomcat、rabbitmq(Docker安装包下载)

一、启动docker服务,设置镜像:

systemctl start docker

vi /etc/docker/daemon.json

{
   "registry-mirrors": ["https://registry.docker-cn.com"]
}

二、下拉镜像:

在镜像中心https://hub.docker.com/explore/,找到对应的redis、mongodb、mysql的页面;

复制命令到远程桌面工具运行。

三、启动各个应用:

docker exec命令允许您在Docker容器内运行命令。

以下命令行将为您提供mongo容器内的bash shell :

docker exec -it some-mongo bash

some-mongo分配给容器的名称

日志可通过Docker的容器日志获得:

docker logs some-mongo

some-mongo分配给容器的名称

启动容器:

docker run --name some-mongo -d mongo:tag

some-mongo分配给容器的名称,tag是指定所需MongoDB版本

-d:代表后台交互运行,查询具体的日志请使用docker logs some-mongo

---------------------------------------------------------------------------

启动redis:

    此处未采取挂载目录的方式启动,则当docker服务重启,数据文件和配置文件都会不存在。

    docker run -p 6379:6379 --name myRedis -d redis:latest

        挂载:-v /docker/host/dir:/data           /docker/host/dir 主机数据文件存放目录

            默认情况下不读取配置文件, 自定义配置文件:-v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf

    远程链接访问:linux服务器ip,端口:6379

启动mongodb:

    此处未采取挂载目录的方式启动,则当docker服务重启,数据文件都会不存在。

    docker run -p 27017:27017 --name myMongo -d mongo:latest

        挂载:    -v /my/own/datadir:/data/db                            /my/own/datadir 主机数据文件存放目录

            默认情况下不读取配置文件,自定义配置文件:-v /my/custom:/etc/mongo -d mongo --config /etc/mongo/mongod.conf

                --config用于指定配置文件路径

                -v用于将主机配置文件挂载到容器中

    连接客户端,并切换到 admin 数据库:

   docker exec -it myMongo mongo admin

    不存在则创建并切换指定数据库:

        use 数据库名

    use myBlog

    创建用户:

    db.createUser( { 

        user: "myBlog", 

        pwd: "myBlog", 

        roles: [ { role: "readWrite", db: "myBlog" } ] 

    })

验证用户权限:

    db.auth(''myBlog'',''myBlog'')

    返回结果:1 则创建成功

查看当前数据库:

    db

查看所有数据库:

    show dbs

退出容器,使用myBlog登陆:

    docker exec -it myMongo mongo myBlog

查看当前数据库:

    db

    返回结果:myBlog

启动tomcat:

    此处的tomcat版本为8.5,

    挂载目录:/usr/local/tomcat/conf

                    /usr/local/tomcat/logs

                    /usr/local/tomcat/webapps

此处未采取挂载目录的方式启动,则当docker服务重启,配置文件和项目文件都需要重新配置。

docker run -it --rm -p 8080:8080 -d tomcat:latest

    第一个8080为外部访问端口

    第二个8080为tomcat默认访问端口

    修改默认配置和部署项目:

        查看对应的容器id:

        docker ps

        进入容器内部:

        docker exec -it 01e bash

        默认Tomcat环境是:

CATALINA_BASE:   /usr/local/tomcat
CATALINA_HOME:   /usr/local/tomcat
CATALINA_TMPDIR: /usr/local/tomcat/temp
JRE_HOME:        /usr
CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

启动rabbitmq:

此处未采取挂载目录的方式启动,则当docker服务重启,配置文件和数据文件都会不存在。

docker run -d --hostname myRabbit --name someRabbit -d -p 15672:15672 rabbitmq

    myRabbit 指定主机名

    someRabbit 指定容器名

    挂载:-v /myRabbit/data:/var/lib/rabbitmq /myRabbit/conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf

                    /myRabbit/data 主机数据文件存放目录        /myRabbit/conf/rabbitmq.conf 主机配置文件

  需要远程访问,则执行:

    docker run -d --hostname myRabbit --name someRabbit -d -p 15672:15672 rabbitmq:3-management

    rabbitmq:3-management 管理工具

    随后,访问http://host-ip:15672,用户和密码:guest

错误处理:

docker 容器提示没安装vim:

apt-get update

apt-get install vim

 停止所有的container:

docker stop $(docker ps -a -q)

    删除所有container:

docker rm $(docker ps -a -q)

Centos 7.2 安装配置 Nginx、PHP7、Mysql、JDK、Tomcat、Redis、RAP

Centos 7.2 安装配置 Nginx、PHP7、Mysql、JDK、Tomcat、Redis、RAP

以下操作均在阿里云 ECS(Centos 7.2)环境下执行,其他系统环境可能会有些许差别,仅供参考

软件更新

由于系统驱动的兼容性等问题,当前云服务器 ECS Linux 不支持内核升级操作(更多相关说明,可以参阅 ECS 使用须知)。

一般拿到一台新的服务器,我喜欢先进行软件升级。阿里云ECS不建议升级服务器的内核和操作系统版本,所以,在进行系统软件更新操作时,应该将其剔除。

下面是查看服务器内核及系统版本,可以看一下在软件升级前后,剔除与否的区别。

uname -a
lsb_release -a

首先打开 /etc/yum.conf (vi /etc/yum.conf )文件,然后在 [main] 后面加入以下两行代码,这样在软件更新时,就不会升级内核及系统版本了。

exclude=kernel*
exclude=centos-release*

然后更新软件,-y 参数是在执行过程中,遇到的交互默认选择 yes ,如果想看一下软件的更新信息,可以去掉 -y 参数。

yum -y update

参考:阿里云ECS(LINUX) 更新时不升级内核配置说明

主机名修改

查看主机名指令

hostname

阿里云 ECS 默认的主机名是随机生成的,看着不是特别舒服,可以修改 /etc/hostname 文件,将现在的主机名改成自己想要的名称。

vim /etc/hostname

然后,按ESC 输入 :wq 保存(vim 基本指令)。reboot(重启),看一下主机名是否已经变更。

PS:临时修改主机名,重启后还是原来主机名。

hostname 主机名

直接使用yum安装软件,可能是稳定版,但不是新版本,这里使用更换源或者编译安装的方式,安装自己想要的版本

安装Nginx

在更换源之前,可以查看一下系统默认源 Nginx 的版本信息,与换源后做下对比。

yum info Nginx

1.为了更换源,首先新建一个repo,例如 Nginx.repo

vim /etc/yum.repos.d/Nginx.repo

2.编辑内容如下

[Nginx]
name=Nginx repo
baseurl=http://Nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

这里配置的是mainline version,如果想用稳定版,将baseurl中的mainline删除即可。

3.进行安装

yum install Nginx

4.查看版本

Nginx -v

5.开启服务

systemctl start Nginx

6.查看状态

systemctl status Nginx

至此,Nginx已经安装完成,访问服务器IP地址(域名已经解析,也可以使用域名访问),看一下有没有欢迎页面。

参考:nginx.org

防火墙配置

如果上述步骤结束后,没有看到欢迎页面,可能是防火墙配置造成的(80端口没有开放),Centos 7 默认的防火墙是FirewallD。

FirewallD有图像界面工具firewall-config和命令行工具firewall-cmd,服务器上通常使用命令行工具firewall-cmd。

查看防火墙运行状态

firewall-cmd --state

开启 FirewallD 服务

systemctl start firewalld

查看 FirewallD 状态

systemctl status firewalld

查看 FirewallD 配置

firewall-cmd --list-all

开启默认区域TCP 80 端口,加参数 permanent ,意味着重载后配置永久生效,不加此参数配置立刻生效,但 FirewallD 重载后失效。

firewall-cmd --permanent --add-port=80/tcp

防火墙开启的状态下,只需开启 80 端口(Nginx 默认端口),就可以访问页面了。

关闭默认区域TCP 80 端口

firewall-cmd --permanent --remove-port=80/tcp

开启 HTTP 服务(默认配置下等于开启TCP 80端口)

firewall-cmd --permanent --add-service=http

关闭 HTTP 服务(默认配置下等于关闭TCP 80端口)

firewall-cmd --permanent --remove-service=http

重载配置

firewall-cmd --reload

参考:CetnOS 7 默认防火墙FirewallD的使用说明

安装PHP

REMI 仓库提供了CentOS和RHEL的核心包的更新版本,尤其是最新的PHP/MysqL系列

在安装过程中可以使用如下命令随时查看仓库变化

yum repolist all

安装REMI仓库之前,首先安装EPEL仓库,因为REMI中的一些包依赖于EPEL

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

接下来安装 REMI 仓库

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

再安装 yum 的配置管理工具,方便配置 yum 仓库

yum install yum-utils

启用 remi-PHP71 仓库

yum-config-manager --enable remi-PHP71

最后,安装PHP

yum install PHP

安装完成后,查看PHP版本以及扩展信息

PHP --version
PHP --modules

参考:Remi's RPM repository

安装PHP-FPM,简单理解,PHP-FPM是FastCGI的管理器,FastCGI是处理Nginx转发过来的PHP脚本的。

yum install PHP-fpm

参考:PHP-FPM是什么

配置Nginx

现在Nginx、PHP、PHP-FPM都安装好了,怎么让PHP脚本跑起来呢?

首先,配置Nginx,简单配置如下:

然后在www目录下,写个index.PHP,内容如下:

<?PHP
    echo PHPinfo();

重启Nginx服务(Nginx更新配置后需要重启生效,如果之前服务没启,直接start就好)

systemctl restart Nginx

开启PHP-fpm服务

systemctl start PHP-fpm

访问页面,it's work!

安装MysqL

Centos 7 默认yum源中由 MariaDB 取代了 MysqL

首先,下载rpm包

wget http://dev.MysqL.com/get/MysqL57-community-release-el7-9.noarch.rpm

安装rpm包

rpm -ivh MysqL57-community-release-el7-9.noarch.rpm

安装MysqL

yum install MysqL-community-server

开启MysqLd服务

systemctl start MysqLd

查找初始化密码

grep 'temporary password' /var/log/MysqLd.log

使用root账号登录

MysqL -uroot -p

修改root账号密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '这里的密码要复杂些,要不然会提示不安全,修改失败';

当然,如果需要远程访问数据库的话,还需要设置权限(这里是赋予任何主机访问数据的权限,只是举个栗子,不建议这么做)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

这时候,就可以远程访问数据库了,如果访问不了,看一下是不是防火墙的问题。

参考:mysql

现在一套LNMP环境就搭建好了,接下来搭建JDK + TOMCAT

安装JDK

下载JDK rpm,因为官网下载需要接受许可,所以直接wget url的方式是行不通的,也可以先下载到本地再传到服务器上面。

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.rpm

下载完成可以 ls 看一下是否存在,然后安装rpm,注意包名跟自己下载的保持一致哦

rpm -ivh jdk-8u101-linux-x64.rpm

小插曲:在安装过程中,我不小心按了Ctrl+C,安装过程中断退出了,没有安装完,我想卸载重新安装。

所以我先查看已经安装的jdk rpm

rpm -qa | grep jdk

然后卸载

rpm -e 包名

发现报错,卸载不了,我想可能是安装未完成导致的。所以我就升级RPM包

rpm -Uvh jdk-8u101-linux-x64.rpm

恩,这样应该没问题了。不行,还是不放心,又卸载了,重新安装了一遍。- -!

回到正题,安装完成后,配置环境变量,在/etc/profile文件中加入如下内容:

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLAsspATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

重新加载文件

source /etc/profile

查看安装是否成功

java -version
javac -version

也可以写个简单的demo,vim demo.java,内容如下:

class demo {
    public static void main(String[] args) {
        System.out.println("It's work!");
    }
}

编译执行

javac demo.java
java demo

看到 It's work! 说明安装配置成功。

参考:oracle

安装Tomcat

下载tar包

wget http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M11/bin/apache-tomcat-9.0.0.M11.tar.gz

解压

tar zxvf apache-tomcat-9.0.0.M11.tar.gz

将解压后的文件移到自己想要的位置,比如

mv apache-tomcat-9.0.0.M11 /usr/local/tomcat

运行Tomcat

cd bin
./startup.sh

停止Tomcat

./shutdown.sh

访问8080端口(Tomcat默认8080端口),就会看到汤姆猫。

参考:Tomcat

安装Redis

下载Redis

wget http://download.redis.io/releases/redis-3.2.4.tar.gz

解压,并移到想要的位置

tar zxvf redis-3.2.4.tar.gz
mv redis-3.2.4 /usr/local/

进入redis目录,编译

cd /usr/local/redis-3.2.4
make

这是可能会遇到如下问题:

这是由于没有安装GCC,安装GCC

yum install gcc

安装完成后,再make,又遇到如下问题:

Allocator  
Selecting a non-default memory allocator when building Redis is done by setting  
the `MALLOC` environment variable. Redis is compiled and linked against libc  
malloc by default,with the exception of jemalloc being the default on Linux  
systems. This default was picked because jemalloc has proven to have fewer  
fragmentation problems than libc malloc.  
To force compiling against libc malloc,use:  
    % make MALLOC=libc  
To compile against jemalloc on Mac OS X systems,use:  
    % make MALLOC=jemalloc

这是由于默认使用jemalloc分配器,但是系统没有jemalloc,可以使用如下命令强制使用libc解决:

make MALLOC=libc

好像一切不是那么顺利,又出现了下面这个错误:

找了半天不知道什么原因,网上查资料也没查到,根据以往的经验,删除,重新解压安装。
这次直接make,而不是make MALLOC=libc,就莫名其妙的好了,好了,好了。。。

安装完成后会提示,执行make test,检测安装是否成功。

接着执行make test,会有提示需要tcl

安装完tcl,再执行make test就没问题了。

终于编译完成了,接下来安装

make install

执行

redis-server

看到这个熟悉的画面了吗?到这里算是安装完成了。

参考:Redis

上来就吧啦吧啦装了一堆软件,这是要干嘛呢,其实我只想部署个RAP而已,因为RAP需要Java Web环境和MysqL、Redis,就顺手把LNMP环境也搭了一遍。

好了,现在环境都搭好了,可以部署RAP了

部署RAP

首先下载RAP的war包

wget http://rap.taobao.org/release/RAP-0.14.1-SNAPSHOT.war

下载完成后将war包,移到Tomcat的webapps目录下,并重命名为ROOT.war

mv RAP-0.14.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war

1.确保Tomcat处于开启状态,该war包将自动部署到文件夹ROOT,打开ROOT中的WEB-INF/classes/config.properties 来修改数据库配置。

2.修改redis.conf,打开daemonize,使其后台启动,如图:

开启Redis,载入刚才修改的配置

redis-server redis.conf

查看Redis是否处于运行状态

ps -ef | grep redis

3.开启MysqL,初始化数据库

cd tomcat/webapps/ROOT/WEB-INF/classes/database
MysqL -uroot -p < initialize.sql

4.最好重启一下Tomcat服务,然后访问8080端口,bingo~

Nginx转发

简单做了Nginx的转发,使不同域名指向同一端口

server {
    listen       80;
    server_name  rap.aniceday.cn;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }

}

CentOS-Docker安装RabbitMQ(单点)

CentOS-Docker安装RabbitMQ(单点)

这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。

获取镜像

$ docker pull rabbitmq:management

运行镜像

$ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

$ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management

访问管理界面

访问管理界面的地址就是 http://[宿主机IP]:15672,没指定用户名密码默认的账户guest/guest

创建指定配置文件RabbitMQ

$ mkdir -p /home/rabbitmq/lib /home/rabbitmq/etc /home/rabbitmq/log
$ docker cp -a rabbitmq:/var/lib/rabbitmq /home/rabbitmq/lib/
$ docker cp -a rabbitmq:/etc/rabbitmq /home/rabbitmq/etc/
$ docker cp -a rabbitmq:/var/log/rabbitmq /home/rabbitmq/log/

删除重建带有目录映射的容器

$ docker rm -f -v rabbitmq
$ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq \
-v /home/rabbitmq/etc/rabbitmq:/etc/rabbitmq \
-v /home/rabbitmq/lib/rabbitmq:/var/lib/rabbitmq \
-v /home/rabbitmq/log/rabbitmq/:/var/log/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management

性能测试

首先下载官方提供的rabbitmq测试工具perf-test,下载地址

常用命令

$ rabbitmqctl add_user root root //用户名密码都是root
$ rabbitmqctl list_queues 查看等待队列
$ rabbitmqctl stop_app 停止节点
$ rabbitmqctl reset 重置节点
$ rabbitmqctl start_app 启动节点
$ rabbitmqctl cluster_status 查看集群状态
$ rabbitmqctl change_cluster_node_type disc/ram –更改节点为磁盘或内存节点
$ rabbitmqctl set_policy ha-all "hello" '{"ha-mode":"all"}' 将"hello"的队列设置为同步给其它节点,即开启高可用模式
$ rabbitmqctl forget_cluster_node rabbit@rabbit1 将节点从集群中移除

CentOS-Docker安装RabbitMQ集群(rabbitmq:3.7.16-management)

CentOS-Docker安装RabbitMQ集群(rabbitmq:3.7.16-management)

准备工作

1.机器资源(分别安装docker环境)

建议机器配置: centos7.x 4G及以上 100GB及以上 2核及以上

192.168.1.101
192.168.1.102
192.168.1.103

2.分别配置hosts文件,追加
$ vim /home/rabbitmq/hosts

192.168.1.101 rabbit1 rabbit1
192.168.1.102 rabbit2 rabbit2
192.168.1.103 rabbit3 rabbit3

下载镜像(每台机器)

$ docker pull  rabbitmq:3.7.16-management

创建目录 (每台机器)

$ mkdir -p /home/rabbitmq

 

运行镜像(每台机器)

创建容器(rabbit1)

$ docker run --restart=unless-stopped -h rabbit1 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit1 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_ERLANG_COOKIE='xxx_2019'  rabbitmq:3.7.16-management

创建容器(rabbit2)

$ docker run --restart=unless-stopped -h rabbit2 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit2 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_ERLANG_COOKIE='xxx_2019'  rabbitmq:3.7.16-management

创建容器(rabbit3)

$ docker run --restart=unless-stopped -h rabbit3 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit3 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_ERLANG_COOKIE='xxx_2019'  rabbitmq:3.7.16-management

参数说明
#容器后台运行
-d
#容器的主机名为 rabbit_master,容器内部的hostname
--hostname rabbit_master
#将宿主机目录/home/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。
-v /home/rabbitmq:/var/lib/rabbitmq:z
#设置rabbitmq的cookie可以自定义为其他文本,三个容器保持一致即可。
-e RABBITMQ_ERLANG_COOKIE='xxx_2019'

 

绑定集群

将myrabbit1节点重置

$ docker exec -it myrabbit1 bash

$ rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl start_app

将myrabbit2节点加入集群

$ docker exec -it myrabbit2 bash

$ rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl join_cluster rabbit@rabbit1 && \
rabbitmqctl start_app

将myrabbit3节点加入集群

$ docker exec -it myrabbit3 bash

$ rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl join_cluster rabbit@rabbit2 && \
rabbitmqctl start_app

查询集群状态

$ rabbitmqctl cluster_status

故障节点的处理

$ docker exec -it rabbit2 /bin/bash

$ rabbitmqctl stop_app

#在一个正常的节点上移除有问题的节点

$ docker exec -it rabbit1 /bin/bash

$ rabbitmqctl forget_cluster_node rabbit@rabbit2

 

使用说明

springboot集成

spring.rabbitmq.addresses=192.168.1.101:5672,192.168.1.102:5672,192.168.1.103:5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
spring.rabbitmq.virtual-host=/

#支持手动ack模式
spring.rabbitmq.listener.simple.ackNowledge-mode=manual
#每个并发的预取条数
spring.rabbitmq.listener.simple.prefetch=10
#并发数
spring.rabbitmq.listener.simple.concurrency=3
#最大并发数
spring.rabbitmq.listener.simple.max-concurrency=10
spring.rabbitmq.listener.direct.ackNowledge-mode=manual

队列模式分为普通模式和镜像模式,集群模式建议直接使用镜像队列

1.全部节点镜像策略创建

2.指定节点数镜像策略创建

参数说明

Pattern 模式:"^"为全部;"^all-"为所有all-开头

Priority 优先级:建议10,比较耗费资源

DeFinition 定义参数:

ha-mode=all 或 exactly;

ha-sync-mode=automatic;

ha-params=2(ha-mode=exactly);

 

CentOS-Docker安装RabbitMQ集群(rabbitmq:3.8.9-management)

CentOS-Docker安装RabbitMQ集群(rabbitmq:3.8.9-management)

准备工作

1.机器资源(分别安装docker环境)

建议机器配置: centos7.x 4G及以上 100GB及以上 2核及以上

192.168.1.101
192.168.1.102
192.168.1.103

2.分别配置hosts文件,追加
vim /home/rabbitmq/hosts

192.168.1.101 rabbit1 rabbit1
192.168.1.102 rabbit2 rabbit2
192.168.1.103 rabbit3 rabbit3

下载镜像(每台机器)

$ docker pull rabbitmq:3.8.9-management

创建目录 (每台机器)

mkdir -p /home/rabbitmq

 

运行镜像(每台机器)

创建容器(rabbit1)

docker run --restart=unless-stopped -h rabbit1 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit1 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 
rabbitmq:3.8.9-management

创建容器(rabbit2)

docker run --restart=unless-stopped -h rabbit2 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit2 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \

rabbitmq:3.8.9-management

创建容器(rabbit3)

docker run --restart=unless-stopped -h rabbit3 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit3 \
-v /home/rabbitmq:/var/lib/rabbitmq:z -v /home/rabbitmq/hosts:/etc/hosts \

rabbitmq:3.8.9-management

参数说明
#容器后台运行
-d
#容器的主机名为 rabbit1,容器内部的hostname
-h rabbit1
#将宿主机目录/home/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。
-v /home/rabbitmq:/var/lib/rabbitmq:z
#设置rabbitmq的cookie可以自定义为其他文本,三个容器保持一致即可。
-e RABBITMQ_ERLANG_COOKIE=''xxx_2020''    参数已过期,需要修改erlang.cookie

机器分别配置并重启容器(erlang.cookie)

$ chmod 600 /home/rabbitmq/.erlang.cookie

$ vim /home/rabbitmq/.erlang.cookie

xxx_2020

绑定集群

将myrabbit1节点重置

docker exec -it myrabbit1 bash

rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl start_app

将myrabbit2节点加入集群

docker exec -it myrabbit2 bash

rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl join_cluster rabbit
@rabbit1 && \
rabbitmqctl start_app

将myrabbit3节点加入集群

docker exec -it myrabbit3 bash

rabbitmqctl stop_app && \
rabbitmqctl reset && \
rabbitmqctl join_cluster rabbit
@rabbit2 && \
rabbitmqctl start_app

查询集群状态

rabbitmqctl cluster_status

故障节点的处理

docker exec -it rabbit2 /bin/bash

rabbitmqctl stop_app

#在一个正常的节点上移除有问题的节点

docker exec -it rabbit1 /bin/bash

rabbitmqctl forget_cluster_node rabbit@rabbit2

 

使用说明

springboot集成

spring.rabbitmq.addresses=192.168.1.101:5672,192.168.1.102:5672,192.168.1.103:5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
spring.rabbitmq.virtual-host=/

#支持手动ack模式
spring.rabbitmq.listener.simple.acknowledge-mode=manual
#每个并发的预取条数
spring.rabbitmq.listener.simple.prefetch=10
#并发数
spring.rabbitmq.listener.simple.concurrency=3
#最大并发数
spring.rabbitmq.listener.simple.max-concurrency=10
spring.rabbitmq.listener.direct.acknowledge-mode=manual

队列模式分为普通模式和镜像模式,集群模式建议直接使用镜像队列

1.全部节点镜像策略创建

2.指定节点数镜像策略创建

参数说明

Pattern 模式:"^"为全部;"^all-"为所有all-开头

Priority 优先级:建议10,比较耗费资源

Definition 定义参数:

ha-mode=all 或 exactly;

ha-sync-mode=automatic;

ha-params=2(ha-mode=exactly);

 

关于docker安装redis、mongodb、tomcat、rabbitmqDocker安装包下载的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Centos 7.2 安装配置 Nginx、PHP7、Mysql、JDK、Tomcat、Redis、RAP、CentOS-Docker安装RabbitMQ(单点)、CentOS-Docker安装RabbitMQ集群(rabbitmq:3.7.16-management)、CentOS-Docker安装RabbitMQ集群(rabbitmq:3.8.9-management)的相关知识,请在本站寻找。

本文标签: