【云原生】第五篇--Docker容器化部署企业级应用集群

打印 上一主题 下一主题

主题 669|帖子 669|积分 2007

Docker容器化部署企业级应用集群



一、Docker容器化部署企业级应用

1.1 使用Docker容器化部署企业级应用必要性



  • 有利于快速实现企业级应用部署
  • 有利于快速实现企业级应用恢复
1.2 使用Docker容器化部署企业级应用参考资料


二、使用Docker容器实现Nginx部署

2.1 获取参考资料




2.2 运行Nginx应用容器

   不在docker host暴露端口
  1. # docker run -d --name nginx-server -v /opt/nginx-server:/usr/share/nginx/html:ro nginx
  2. 664cd1bbda4ad2a71cbd09f0c6baa9b34db80db2d69496670a960be07b9521cb
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
  3. 664cd1bbda4a   nginx       "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    80/tcp                                                 nginx-server
复制代码
  1. # docker inspect 664 | grep IPAddress
  2.             "SecondaryIPAddresses": null,
  3.             "IPAddress": "172.17.0.3",
  4.                     "IPAddress": "172.17.0.3",
复制代码
  1. # curl http://172.17.0.3
  2. <html>
  3. <head><title>403 Forbidden</title></head>
  4. <body>
  5. <center><h1>403 Forbidden</h1></center>
  6. <hr><center>nginx/1.21.6</center>
  7. </body>
  8. </html>
复制代码
  1. # ls /opt
  2. nginx-server
  3. # echo "nginx is working" > /opt/nginx-server/index.html
复制代码
  1. # curl http://172.17.0.3
  2. nginx is working
复制代码
2.3 运行Nginx应用容器

   在docker host暴露80端口
  1. # docker run -d -p 80:80 --name nginx-server-port -v /opt/nginx-server-port:/usr/share/nginx/html:ro nginx
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE       COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
  3. 74dddf51983d   nginx       "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds       0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx-server-port
复制代码
  1. # ls /opt
  2. nginx-server  nginx-server-port
复制代码
  1. # echo "nginx is running" > /opt/nginx-server-port/index.html
复制代码
在宿主机上访问

  1. # docker top nginx-server-port
  2. UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
  3. root                22195               22163               0                   15:08               ?                   00:00:00            nginx: master process nginx -g daemon off;
  4. 101                 22387               22195               0                   15:08               ?                   00:00:00            nginx: worker process
复制代码
2.4 运行Nginx应用容器

   挂载配置文件,需要创建一个nginx容器,把配置文件复制出来修改后使用。
  1. # docker cp nginxwebcontainername:/etc/nginx/nginx.conf /opt/nginxcon/
  2. 修改后即可使用
复制代码
  1. # ls /opt/nginxcon/nginx.conf
  2. /opt/nginxcon/nginx.conf
复制代码
  1. # docker run -d \
  2. -p 82:80 --name nginx-server-conf \
  3. -v /opt/nginx-server-conf:/usr/share/nginx/html:ro \
  4. -v /opt/nginxcon/nginx.conf:/etc/nginx/nginx.conf:ro \
  5. nginx
  6. 76251ec44e5049445399303944fc96eb8161ccb49e27b673b99cb2492009523c
复制代码
  1. # docker top nginx-server-conf
  2. UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
  3. root                25005               24972               0                   15:38               ?                   00:00:00            nginx: master process nginx -g daemon off;
  4. 101                 25178               25005               0                   15:38               ?                   00:00:00            nginx: worker process
  5. 101                 25179               25005               0                   15:38               ?                   00:00:00            nginx: worker process
复制代码
三、使用Docker容器实现Tomcat部署

3.1 获取参考资料




3.2 运行tomcat应用容器

3.2.1 不暴露端口运行

  1. # docker run -d --rm tomcat:9.0
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
  3. c20a0e781246   tomcat:9.0   "catalina.sh run"        27 seconds ago      Up 25 seconds      8080/tcp                                               heuristic_cori
复制代码
3.2.2 暴露端口运行

  1. # docker run -d -p 8080:8080 --rm tomcat:9.0
  2. 2fcf5762314373c824928490b871138a01a94abedd7e6814ad5f361d09fbe1de
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
  3. 2fcf57623143   tomcat:9.0   "catalina.sh run"        3 seconds ago       Up 1 second        0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              eloquent_chatelet
复制代码
在宿主机访问

  1. # docker exec 2fc ls /usr/local/tomcat/webapps
  2. 里面为空,所以可以添加网站文件。
复制代码
3.2.3 暴露端口及添加网站文件

  1. # docker run -d -p 8081:8080 -v /opt/tomcat-server:/usr/local/tomcat/webapps/ROOT tomcat:9.0
  2. f456e705d48fc603b7243a435f0edd6284558c194e105d87befff2dccddc0b63
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE        COMMAND             CREATED         STATUS         PORTS                                       NAMES
  3. f456e705d48f   tomcat:9.0   "catalina.sh run"   3 seconds ago   Up 2 seconds   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   cool_germain
复制代码
  1. # echo "tomcat running" > /opt/tomcat-server/index.html
复制代码
在宿主机访问

四、使用Docker容器实现MySQL部署

4.1 单节点MySQL部署



  1. # docker run -p 3306:3306 \
  2. --name mysql \
  3. -v /opt/mysql/log:/var/log/mysql \
  4. -v /opt/mysql/data:/var/lib/mysql \
  5. -v /opt/mysql/conf:/etc/mysql \
  6. -e MYSQL_ROOT_PASSWORD=root \
  7. -d \
  8. mysql:5.7
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
  3. 6d16ca21cf31   mysql:5.7   "docker-entrypoint.s…"   32 seconds ago   Up 30 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
复制代码
  1. 通过容器中客户端访问
  2. # docker exec -it mysql mysql -uroot -proot
  3. mysql: [Warning] Using a password on the command line interface can be insecure.
  4. Welcome to the MySQL monitor.  Commands end with ; or \g.
  5. Your MySQL connection id is 4
  6. Server version: 5.7.37 MySQL Community Server (GPL)
  7. Copyright (c) 2000, 2022, Oracle and/or its affiliates.
  8. Oracle is a registered trademark of Oracle Corporation and/or its
  9. affiliates. Other names may be trademarks of their respective
  10. owners.
  11. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  12. mysql>
复制代码
  1. 在docker host上访问
  2. # yum -y install mariadb
  3. # mysql -h 192.168.255.157 -uroot -proot -P 3306
  4. Welcome to the MariaDB monitor.  Commands end with ; or \g.
  5. Your MySQL connection id is 7
  6. Server version: 5.7.37 MySQL Community Server (GPL)
  7. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  8. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  9. MySQL [(none)]> show databases;
  10. +--------------------+
  11. | Database           |
  12. +--------------------+
  13. | information_schema |
  14. | mysql              |
  15. | performance_schema |
  16. | sys                |
  17. +--------------------+
  18. 4 rows in set (0.00 sec)
复制代码
4.2 MySQL主从复制集群部署

4.2.1 MySQL主节点部署

  1. # docker run -p 3306:3306 \
  2. --name mysql-master \
  3. -v /opt/mysql-master/log:/var/log/mysql \
  4. -v /opt/mysql-master/data:/var/lib/mysql \
  5. -v /opt/mysql-master/conf:/etc/mysql \
  6. -e MYSQL_ROOT_PASSWORD=root \
  7. -d mysql:5.7
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
  3. 2dbbed8e35c7   mysql:5.7   "docker-entrypoint.s…"   58 seconds ago   Up 57 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql-master
复制代码
4.2.2 MySQL主节点配置

  1. # vim /opt/mysql-master/conf/my.cnf
  2. # cat /opt/mysql-master/conf/my.cnf
  3. [client]
  4. default-character-set=utf8
  5. [mysql]
  6. default-character-set=utf8
  7. [mysqld]
  8. init_connect='SET collation_connection = utf8_unicode_ci'
  9. init_connect='SET NAMES utf8'
  10. character-set-server=utf8
  11. collation-server=utf8_unicode_ci
  12. skip-character-set-client-handshake
  13. skip-name-resolve
  14. server_id=1
  15. log-bin=mysql-bin
  16. read-only=0
  17. binlog-do-db=kubemsb_test
  18. replicate-ignore-db=mysql
  19. replicate-ignore-db=sys
  20. replicate-ignore-db=information_schema
  21. replicate-ignore-db=performance_schema
复制代码
4.2.3 MySQL从节点部署

  1. # docker run -p 3307:3306 \
  2. --name mysql-slave \
  3. -v /opt/mysql-slave/log:/var/log/mysql \
  4. -v /opt/mysql-slave/data:/var/lib/mysql \
  5. -v /opt/mysql-slave/conf:/etc/mysql \
  6. -e MYSQL_ROOT_PASSWORD=root \
  7. -d
  8. --link mysql-master:mysql-master
  9. mysql:5.7
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
  3. caf7bf3fc68f   mysql:5.7   "docker-entrypoint.s…"   8 seconds ago   Up 6 seconds   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-slave
复制代码
4.2.4 MySQL从节点配置

  1. # vim /opt/mysql-slave/conf/my.cnf
  2. # cat /opt/mysql-slave/conf/my.cnf
  3. [client]
  4. default-character-set=utf8
  5. [mysql]
  6. default-character-set=utf8
  7. [mysqld]
  8. init_connect='SET collation_connection = utf8_unicode_ci'
  9. init_connect='SET NAMES utf8'
  10. character-set-server=utf8
  11. collation-server=utf8_unicode_ci
  12. skip-character-set-client-handshake
  13. skip-name-resolve
  14. server_id=2
  15. log-bin=mysql-bin
  16. read-only=1
  17. binlog-do-db=kubemsb_test
  18. replicate-ignore-db=mysql
  19. replicate-ignore-db=sys
  20. replicate-ignore-db=information_schema
  21. replicate-ignore-db=performance_schema
复制代码
4.2.5 master节点配置

  1. # mysql -h 192.168.255.157 -uroot -proot -P 3306
  2. Welcome to the MariaDB monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 2
  4. Server version: 5.7.37 MySQL Community Server (GPL)
  5. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  7. MySQL [(none)]>
复制代码
  1. 授权
  2. MySQL [(none)]> grant replication slave on *.* to 'backup'@'%' identified by '123456';
复制代码
  1. 重启容器,使用配置生效
  2. # docker restart mysql-master
复制代码
  1. 查看状态
  2. MySQL [(none)]> show master status\G
  3. *************************** 1. row ***************************
  4.              File: mysql-bin.000001
  5.          Position: 154
  6.      Binlog_Do_DB: kubemsb_test
  7. Binlog_Ignore_DB:
  8. Executed_Gtid_Set:
  9. 1 row in set (0.00 sec)
复制代码
4.2.6 slave节点配置

  1. # docker restart mysql-slave
复制代码
  1. # mysql -h 192.168.255.157 -uroot -proot -P 3307
  2. Welcome to the MariaDB monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 2
  4. Server version: 5.7.37 MySQL Community Server (GPL)
  5. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  7. MySQL [(none)]>
复制代码
  1. MySQL [(none)]> change master to master_host='mysql-master', master_user='backup', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=154, master_port=3306;
复制代码
  1. MySQL [(none)]> start slave;
复制代码
  1. MySQL [(none)]> show slave status\G
  2. *************************** 1. row ***************************
  3.                Slave_IO_State: Waiting for master to send event
  4.                   Master_Host: mysql-master
  5.                   Master_User: backup
  6.                   Master_Port: 3306
  7.                 Connect_Retry: 60
  8.               Master_Log_File: mysql-bin.000001
  9.           Read_Master_Log_Pos: 154
  10.                Relay_Log_File: e0872f94c377-relay-bin.000002
  11.                 Relay_Log_Pos: 320
  12.         Relay_Master_Log_File: mysql-bin.000001
  13.              Slave_IO_Running: Yes
  14.             Slave_SQL_Running: Yes
  15.               Replicate_Do_DB:
  16.           Replicate_Ignore_DB: mysql,sys,information_schema,performance_schema
  17.            Replicate_Do_Table:
  18.        Replicate_Ignore_Table:
  19.       Replicate_Wild_Do_Table:
  20.   Replicate_Wild_Ignore_Table:
  21.                    Last_Errno: 0
  22.                    Last_Error:
  23.                  Skip_Counter: 0
  24.           Exec_Master_Log_Pos: 154
  25.               Relay_Log_Space: 534
  26.               Until_Condition: None
  27.                Until_Log_File:
  28.                 Until_Log_Pos: 0
  29.            Master_SSL_Allowed: No
  30.            Master_SSL_CA_File:
  31.            Master_SSL_CA_Path:
  32.               Master_SSL_Cert:
  33.             Master_SSL_Cipher:
  34.                Master_SSL_Key:
  35.         Seconds_Behind_Master: 0
  36. Master_SSL_Verify_Server_Cert: No
  37.                 Last_IO_Errno: 0
  38.                 Last_IO_Error:
  39.                Last_SQL_Errno: 0
  40.                Last_SQL_Error:
  41.   Replicate_Ignore_Server_Ids:
  42.              Master_Server_Id: 1
  43.                   Master_UUID: 0130b415-8b21-11ec-8982-0242ac110002
  44.              Master_Info_File: /var/lib/mysql/master.info
  45.                     SQL_Delay: 0
  46.           SQL_Remaining_Delay: NULL
  47.       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
  48.            Master_Retry_Count: 86400
  49.                   Master_Bind:
  50.       Last_IO_Error_Timestamp:
  51.      Last_SQL_Error_Timestamp:
  52.                Master_SSL_Crl:
  53.            Master_SSL_Crlpath:
  54.            Retrieved_Gtid_Set:
  55.             Executed_Gtid_Set:
  56.                 Auto_Position: 0
  57.          Replicate_Rewrite_DB:
  58.                  Channel_Name:
  59.            Master_TLS_Version:
  60. 1 row in set (0.00 sec)
复制代码
4.2.7 验证MySQL集群可用性

  1. 在MySQL Master节点添加kubemsb_test数据库
  2. # mysql -h 192.168.255.157 -uroot -proot -P3306
  3. MySQL [(none)]> create database kubemsb_test;
  4. Query OK, 1 row affected (0.00 sec)
  5. MySQL [(none)]> show databases;
  6. +--------------------+
  7. | Database           |
  8. +--------------------+
  9. | information_schema |
  10. | kubemsb_test       |     |
  11. | mysql              |
  12. | performance_schema |
  13. | sys                |
  14. +--------------------+
  15. 6 rows in set (0.00 sec)
复制代码
  1. 在MySQL Slave节点查看同步情况
  2. # mysql -h 192.168.255.157 -uroot -proot -P3307
  3. MySQL [(none)]> show databases;
  4. +--------------------+
  5. | Database           |
  6. +--------------------+
  7. | information_schema |
  8. | kubemsb_test       |
  9. | mysql              |
  10. | performance_schema |
  11. | sys                |
  12. +--------------------+
  13. 5 rows in set (0.00 sec)
复制代码
五、使用Docker容器实现Oracle部署

5.1 获取参考资料



5.2 运行oracle容器

  1. # docker pull oracleinanutshell/oracle-xe-11g
复制代码
  1. # docker run -h oracle --name oracle -d -p 49160:22 -p 49161:1521 -p 49162:8080 oracleinanutshell/oracle-xe-11g
  2. 237db949020abf2cee12e3193fa8a34d9dfadaafd9d5604564668d4472abe0b2
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS         PORTS                                                                                                                               NAMES
  3. 237db949020a   oracleinanutshell/oracle-xe-11g   "/bin/sh -c '/usr/sb…"   7 seconds ago   Up 4 seconds   0.0.0.0:49160->22/tcp, :::49160->22/tcp, 0.0.0.0:49161->1521/tcp, :::49161->1521/tcp, 0.0.0.0:49162->8080/tcp, :::49162->8080/tcp   oracle
复制代码
  1. 说明:
  2. 49160 为ssh端口
  3. 49161 为sqlplus端口
  4. 49162 为oem端口
复制代码
  1. oracle数据库连接信息
  2. port:49161
  3. sid:xe
  4. username:system
  5. password:oracle
  6. SYS用户密码为:oracle
复制代码
5.3 下载客户端连接工具

下载链接地址:https://www.oracle.com/tools/downloads/sqldev-downloads.html










六、使用Docker容器实现ElasticSearch+Kibana部署

6.1 获取参考资料

6.1.1 ES部署参考资料





6.1.2 Kibana部署参考资料





6.2 ES部署

  1. # docker pull elasticsearch:7.17.0
复制代码
  1. # mkdir -p /opt/es/config
  2. # mkdir -p /opt/es/data
复制代码
  1. # echo "http.host: 0.0.0.0" >> /opt/es/config/elasticsearch.yml
复制代码
  1. # chmod -R 777 /opt/es/
复制代码
  1. # docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
  2. -e "discovery.type=single-node" \
  3. -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
  4. -v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  5. -v /opt/es/data:/usr/share/elasticsearch/data \
  6. -v /opt/es/plugins:/usr/share/elasticsearch/plugins \
  7. -d elasticsearch:7.17.0
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
  3. e1c306e6e5a3   elasticsearch:7.17.0   "/bin/tini -- /usr/l…"   22 seconds ago   Up 20 seconds   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
复制代码

6.3 Kibana部署

  1. # docker pull kibana:7.17.0
复制代码
  1. # docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.255.157:9200 -p 5601:5601 \
  2. -d kibana:7.17.0
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
  3. fb60e73f9cd5   kibana:7.17.0          "/bin/tini -- /usr/l…"   2 minutes ago   Up 2 minutes   0.0.0.0:5601->5601/tcp, :::5601->5601/tcp                                              kibana
复制代码

七、使用Docker容器实现Redis部署

7.1 获取参考资料





7.2 运行Redis容器

  1. # mkdir -p /opt/redis/conf
复制代码
  1. # touch /opt/redis/conf/redis.conf
复制代码
  1. # docker run -p 6379:6379 --name redis -v /opt/redis/data:/data \
  2. -v /opt/redis/conf:/etc/redis \
  3. -d redis redis-server /etc/redis/redis.conf
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
  3. 9bd2b39cd92a   redis                  "docker-entrypoint.s…"   44 seconds ago   Up 42 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                              redis
复制代码
7.3 验证

  1. # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
复制代码
  1. # yum -y install redis
复制代码
  1. # redis-cli -h 192.168.255.157 -p 6379
  2. 192.168.255.157:6379> set test1 a
  3. OK
  4. 192.168.255.157:6379> get test1
  5. "a"
复制代码
7.4 Redis集群

安装redis-cluster;3主3从方式,从为了同步备份,主进行slot数据分片
  1. 编辑运行多个redis容器脚本文件
  2. # vim redis-cluster.sh
  3. # cat redis-cluster.sh
  4. for port in $(seq 8001 8006); \
  5. do \
  6. mkdir -p /mydata/redis/node-${port}/conf
  7. touch /mydata/redis/node-${port}/conf/redis.conf
  8. cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
  9. port ${port}
  10. cluster-enabled yes
  11. cluster-config-file nodes.conf
  12. cluster-node-timeout 5000
  13. cluster-announce-ip 192.168.255.157
  14. cluster-announce-port ${port}
  15. cluster-announce-bus-port 1${port}
  16. appendonly yes
  17. EOF
  18. docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
  19. -v /mydata/redis/node-${port}/data:/data \
  20. -v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
  21. -d redis:5.0.7 redis-server /etc/redis/redis.conf; \
  22. done
复制代码
  1. 执行脚本
  2. # sh redis-cluster.sh
复制代码
  1. 查看已运行容器
  2. # docker ps
  3. CONTAINER ID   IMAGE         COMMAND                  CREATED              STATUS              PORTS                                                                                                NAMES
  4. 8d53864a98ce   redis:5.0.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8006->8006/tcp, :::8006->8006/tcp, 6379/tcp, 0.0.0.0:18006->18006/tcp, :::18006->18006/tcp   redis-8006
  5. e2b5da0f0605   redis:5.0.7   "docker-entrypoint.s…"   2 minutes ago        Up About a minute   0.0.0.0:8005->8005/tcp, :::8005->8005/tcp, 6379/tcp, 0.0.0.0:18005->18005/tcp, :::18005->18005/tcp   redis-8005
  6. 70e8e8f15aea   redis:5.0.7   "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:8004->8004/tcp, :::8004->8004/tcp, 6379/tcp, 0.0.0.0:18004->18004/tcp, :::18004->18004/tcp   redis-8004
  7. dff8e4bf02b4   redis:5.0.7   "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:8003->8003/tcp, :::8003->8003/tcp, 6379/tcp, 0.0.0.0:18003->18003/tcp, :::18003->18003/tcp   redis-8003
  8. c34dc4c423ef   redis:5.0.7   "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:8002->8002/tcp, :::8002->8002/tcp, 6379/tcp, 0.0.0.0:18002->18002/tcp, :::18002->18002/tcp   redis-8002
  9. b8cb5feffb43   redis:5.0.7   "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:8001->8001/tcp, :::8001->8001/tcp, 6379/tcp, 0.0.0.0:18001->18001/tcp, :::18001->18001/tcp   redis-8001
复制代码
  1. 登录redis容器
  2. # docker exec -it redis-8001 bash
  3. root@b8cb5feffb43:/data#
复制代码
  1. 创建redis-cluster
  2. root@b8cb5feffb43:/data# redis-cli --cluster create 192.168.255.157:8001 192.168.255.157:8002 192.168.255.157:8003 192.168.255.157:8004 192.168.255.157:8005 192.168.255.157:8006 --cluster-replicas 1
复制代码
  1. 输出:
  2. >>> Performing hash slots allocation on 6 nodes...
  3. Master[0] -> Slots 0 - 5460
  4. Master[1] -> Slots 5461 - 10922
  5. Master[2] -> Slots 10923 - 16383
  6. Adding replica 192.168.255.157:8005 to 192.168.255.157:8001
  7. Adding replica 192.168.255.157:8006 to 192.168.255.157:8002
  8. Adding replica 192.168.255.157:8004 to 192.168.255.157:8003
  9. >>> Trying to optimize slaves allocation for anti-affinity
  10. [WARNING] Some slaves are in the same host as their master
  11. M: abd07f1a2679fe77558bad3ff4b7ab70ec41efa5 192.168.255.157:8001
  12.    slots:[0-5460] (5461 slots) master
  13. M: 40e69202bb3eab13a8157c33da6240bb31f2fd6f 192.168.255.157:8002
  14.    slots:[5461-10922] (5462 slots) master
  15. M: 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03 192.168.255.157:8003
  16.    slots:[10923-16383] (5461 slots) master
  17. S: 81d0a4056328830a555fcd75cf523d4c9d52205c 192.168.255.157:8004
  18.    replicates 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03
  19. S: 8121a28519e5b52e4817913aa3969d9431bb68af 192.168.255.157:8005
  20.    replicates abd07f1a2679fe77558bad3ff4b7ab70ec41efa5
  21. S: 3a8dd5343c0b8f5580bc44f6b3bb5b4371d4dde5 192.168.255.157:8006
  22.    replicates 40e69202bb3eab13a8157c33da6240bb31f2fd6f
  23. Can I set the above configuration? (type 'yes' to accept): yes 输入yes
  24. >>> Nodes configuration updated
  25. >>> Assign a different config epoch to each node
  26. >>> Sending CLUSTER MEET messages to join the cluster
  27. Waiting for the cluster to join
  28. .....
  29. >>> Performing Cluster Check (using node 192.168.255.157:8001)
  30. M: abd07f1a2679fe77558bad3ff4b7ab70ec41efa5 192.168.255.157:8001
  31.    slots:[0-5460] (5461 slots) master
  32.    1 additional replica(s)
  33. S: 81d0a4056328830a555fcd75cf523d4c9d52205c 192.168.255.157:8004
  34.    slots: (0 slots) slave
  35.    replicates 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03
  36. M: 40e69202bb3eab13a8157c33da6240bb31f2fd6f 192.168.255.157:8002
  37.    slots:[5461-10922] (5462 slots) master
  38.    1 additional replica(s)
  39. S: 8121a28519e5b52e4817913aa3969d9431bb68af 192.168.255.157:8005
  40.    slots: (0 slots) slave
  41.    replicates abd07f1a2679fe77558bad3ff4b7ab70ec41efa5
  42. M: 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03 192.168.255.157:8003
  43.    slots:[10923-16383] (5461 slots) master
  44.    1 additional replica(s)
  45. S: 3a8dd5343c0b8f5580bc44f6b3bb5b4371d4dde5 192.168.255.157:8006
  46.    slots: (0 slots) slave
  47.    replicates 40e69202bb3eab13a8157c33da6240bb31f2fd6f
  48. [OK] All nodes agree about slots configuration.
  49. >>> Check for open slots...
  50. >>> Check slots coverage...
  51. [OK] All 16384 slots covered.
复制代码
八、使用Docker容器实现RabbitMQ部署

8.1 获取参考资料





8.2 部署RabbitMQ

   部署带管理控制台的RabbitMQ
  1. # docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 -v /opt/rabbitmq:/var/lib/rabbitmq rabbitmq:management
复制代码
  1. # docker ps
  2. CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS         PORTS                                                                                                                                                                                                                                             NAMES
  3. 97d28093faa4   rabbitmq:management   "docker-entrypoint.s…"   11 seconds ago   Up 6 seconds   0.0.0.0:4369->4369/tcp, :::4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, :::5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, :::15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp, :::25672->25672/tcp, 15691-15692/tcp   rabbitmq
复制代码
  1. 端口说明:
  2. 4369, 25672 (Erlang发现&集群端口)
  3. 5672, 5671 (AMQP端口)
  4. 15672 (web管理后台端口)
  5. 61613, 61614 (STOMP协议端口)
  6. 1883, 8883 (MQTT协议端口)
复制代码




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表