zookeeper需要开通的端口

  • 单节点 | zookeeper | 2181 | | —- | —- | | | 2888 | | | 3888 |

  • swarm集群 ```shell cat > /etc/firewalld/services/zk.xml < this is zookeeper port EOF

firewall-cmd —add-service=zk —permanent firewall-cmd —reload systemctl restart docker

  1. ```yaml
  2. version: '3.7'
  3. services:
  4. zoo1:
  5. image: giozk:v1
  6. hostname: zoo1
  7. deploy:
  8. replicas: 1
  9. placement:
  10. constraints: [node.hostname == ehr-ioplatform-0001]
  11. environment:
  12. ZOO_MY_ID: 1
  13. JVMFLAGS: -Xms1024m -Xmx1024m
  14. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
  15. healthcheck:
  16. test: ["CMD-SHELL","zkServer.sh","status || exit 1"]
  17. interval: 5s
  18. timeout: 3s
  19. retries: 3
  20. ports:
  21. - 2181:2181
  22. - 2888:2888
  23. - 3888:3888
  24. networks:
  25. - gio-net
  26. zoo2:
  27. image: giozk:v1
  28. hostname: zoo2
  29. deploy:
  30. replicas: 1
  31. placement:
  32. constraints: [node.hostname == ehr-ioplatform-0002]
  33. environment:
  34. ZOO_MY_ID: 2
  35. JVMFLAGS: -Xms1024m -Xmx1024m
  36. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
  37. healthcheck:
  38. test: ["CMD-SHELL","zkServer.sh","status || exit 1"]
  39. interval: 5s
  40. timeout: 3s
  41. retries: 3
  42. ports:
  43. - 2182:2181
  44. - 2887:2888
  45. - 3887:3888
  46. networks:
  47. - gio-net
  48. zoo3:
  49. image: giozk:v1
  50. hostname: zoo3
  51. deploy:
  52. replicas: 1
  53. placement:
  54. constraints: [ node.hostname == ehr-ioplatform-0003]
  55. environment:
  56. ZOO_MY_ID: 3
  57. JVMFLAGS: -Xms1024m -Xmx1024m
  58. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
  59. healthcheck:
  60. test: ["CMD-SHELL","zkServer.sh","status || exit 1"]
  61. interval: 5s
  62. timeout: 3s
  63. retries: 3
  64. ports:
  65. - 2183:2181
  66. - 2886:2888
  67. - 3886:3888
  68. networks:
  69. - gio-net
  70. networks:
  71. gio-net:
  72. external: true

codis需要开放的端口

  • 单节点 | dashboard | 18080 | | —- | —- | | proxy | 11080,19000 | | fe | 8080 | | server | 6379 | | sentinel | 26379 |

  • swarm集群 ```shell cat > /etc/firewalld/services/codis.xml < this is codis port EOF

firewall-cmd —add-service=codis —permanent firewall-cmd —reload systemctl restart docker

```shell
#!/bin/bash

hostip=`ifconfig eth0 | grep "inet " | awk -F " " '{print $2}'`

if [ "x$hostip" == "x" ]; then
    echo "cann't resolve host ip address"
    exit 1
fi

mkdir -p log

case "$1" in
zookeeper)
    docker rm -f      "Codis-Z2181" &> /dev/null
    docker run --name "Codis-Z2181" -d \
            --read-only \
            -p 2181:2181 \
            jplock/zookeeper
    ;;

dashboard)
    docker rm -f      "Codis-D28080" &> /dev/null
    docker run --name "Codis-D28080" -d \
        --read-only -v `realpath ../config/dashboard.toml`:/codis/dashboard.toml \
                    -v `realpath log`:/codis/log \
        -p 28080:18080 \
        codis-image \
        codis-dashboard -l log/dashboard.log -c dashboard.toml --host-admin ${hostip}:28080
    ;;

proxy)
    docker rm -f      "Codis-P29000" &> /dev/null
    docker run --name "Codis-P29000" -d \
        --read-only -v `realpath ../config/proxy.toml`:/codis/proxy.toml \
                    -v `realpath log`:/codis/log \
        -p 29000:19000 -p 21080:11080 \
        codis-image \
        codis-proxy -l log/proxy.log -c proxy.toml --host-admin ${hostip}:21080 --host-proxy ${hostip}:29000
    ;;

server)
        docker run --net=host --name "Codis-S16379" -d \
            -v `realpath ../config/redis.conf`:/codis/redis.conf \
            -v `realpath log`:/codis/log \
            codis-image \
            codis-server redis.conf  --logfile log/16379.log --port 16379
    ;;


sentinel)
    for ((i=0;i<3;i++)); do
        let port="46380 + i"
        docker rm -f      "Codis-T${port}" &> /dev/null
        docker run --net=host --name "Codis-T${port}" -d \
            -v `realpath ../config/sentinel.conf`:/codis/sentinel.conf \
            -v `realpath log`:/codis/log \
            codis-image \
            redis-sentinel sentinel.conf   --port ${port}  --protected-mode no
    done
    ;;

fe)
    docker rm -f      "Codis-F8080" &> /dev/null
    docker run --name "Codis-F8080" -d \
         -v `realpath log`:/codis/log \
         -p 8080:8080 \
     codis-image \
     codis-fe -l log/fe.log --zookeeper ${hostip}:2181 --listen=0.0.0.0:8080 --assets=/codis/bin/assets
    ;;


cleanup)
    docker rm -f      "Codis-D28080" &> /dev/null
    docker rm -f      "Codis-P29000" &> /dev/null
    for ((i=0;i<4;i++)); do
        let port="26379 + i"
        docker rm -f      "Codis-S${port}" &> /dev/null
    done
    docker rm -f      "Codis-Z2181" &> /dev/null
    ;;

*)
    echo "wrong argument(s)"
    ;;

esac

codis 架构图

image.png
1、zookeeeper,用于存放统一配置信息和集群状态
2、codis-fe,codis管理后台的前端页面。(可以看到是vue的地位)
3、codis-dashboard,coids的管理后台系统。(可以看成是提供后端接口的服务)
4、codis-proxy。工作服务器,负责redsi命令的的分发。
5、codis-group。真正存数据取数据的地方。
6、redis-sentinel。用来监控codis-group的主redis是否工作,用于redsi的主挂了之后,触发主从切换。

启动顺序

dashboard>>proxy>>sentilnel>>server>>fe

ES开放的端口

cat > /etc/firewalld/services/es.xml <<EOF
<?xml version="1.0" encoding="utf-8"?>
<service>
  <description>this is es port</description>
  <source-port protocol="tcp" port="9200-9202"/>
</service>
EOF

firewall-cmd --add-service=es --permanent
firewall-cmd --reload
systemctl restart docker
version: '3'
services:
  elasticsearch:
    image: gioes:v7.1.1
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0003]
    environment:
      - cluster.name=es
      - node.name=es-1
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
      - discovery.zen.fd.ping_timeout=120s
      - discovery.zen.fd.ping_retries=6
      - discovery.zen.fd.ping_interval=30s
      - cluster.initial_master_nodes=es-1
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
      - "ES_JAVA_OPTS=-Xms2G -Xmx2G"
    volumes:
      - /data/es/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - gio-net

  elasticsearch2:
    image: gioes:v7.1.1
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0002]
    environment:
      - cluster.name=es
      - node.name=es-2
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
      - discovery.zen.fd.ping_timeout=120s
      - discovery.zen.fd.ping_retries=6
      - discovery.zen.fd.ping_interval=30s
      - cluster.initial_master_nodes=es-1
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
      - "ES_JAVA_OPTS=-Xms2G -Xmx2G"
    volumes:
      - /data/es/data:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - gio-net

  elasticsearch3:
    image: gioes:v7.1.1
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0001]
    environment:
      - cluster.name=es
      - node.name=es-3
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - discovery.zen.minimum_master_nodes=2
      - discovery.zen.fd.ping_timeout=120s
      - discovery.zen.fd.ping_retries=6
      - discovery.zen.fd.ping_interval=30s
      - cluster.initial_master_nodes=es-1
      - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2,elasticsearch3"
      - "ES_JAVA_OPTS=-Xms2G -Xmx2G"
    volumes:
      - /data/es/data:/usr/share/elasticsearch/data
    ports:
      - 9202:9200
    networks:
      - gio-net



networks:
  gio-net:
    external: true

KAFKA开放的端口

cat > /etc/firewalld/services/kafka.xml <<EOF
<?xml version="1.0" encoding="utf-8"?>
<service>
  <description>this is kafka port</description>
  <port protocol="tcp" port="9092"/>
</service>
EOF

firewall-cmd --add-service=kafka --permanent
firewall-cmd --reload
systemctl restart docker
version: '3'

services:
  kafka1:
    image: giokafka:v1
    hostname: kafka1
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0001]
    environment:
      KAFKA_HEAP_OPTS: -Xmx1G -Xms1G
      KAFKA_ADVERTISED_HOST_NAME: kafka1
      KAFKA_ZOOKEEPER_CONNECT: "10.249.2.10:2181,10.249.2.9:2181,10.249.2.8:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      - gio-net



  kafka2:
    image: giokafka:v1
    hostname: kafka2
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0002]
    environment:
      KAFKA_HEAP_OPTS: -Xmx1G -Xms1G
      KAFKA_ADVERTISED_HOST_NAME: kafka2
      KAFKA_ZOOKEEPER_CONNECT: "10.249.2.10:2181,10.249.2.9:2181,10.249.2.8:2181"
      KAFKA_BROKER_ID: 2
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      - gio-net

  kafka3:
    image: giokafka:v1
    hostname: kafka3
    deploy:
      replicas: 1
      placement:
        constraints: [node.hostname == ehr-ioplatform-0003]
    environment:
      KAFKA_HEAP_OPTS: -Xmx1G -Xms1G
      KAFKA_ADVERTISED_HOST_NAME: kafka3
      KAFKA_ZOOKEEPER_CONNECT: "10.249.2.10:2181,10.249.2.9:2181,10.249.2.8:2181"
      KAFKA_BROKER_ID: 3
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      - gio-net


networks:
  gio-net:
    external: true