zookeeper需要开通的端口
单节点 | zookeeper | 2181 | | —- | —- | | | 2888 | | | 3888 |
swarm集群 ```shell cat > /etc/firewalld/services/zk.xml <
EOFthis is zookeeper port
firewall-cmd —add-service=zk —permanent firewall-cmd —reload systemctl restart docker
```yamlversion: '3.7'services:zoo1:image: giozk:v1hostname: zoo1deploy:replicas: 1placement:constraints: [node.hostname == ehr-ioplatform-0001]environment:ZOO_MY_ID: 1JVMFLAGS: -Xms1024m -Xmx1024mZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888healthcheck:test: ["CMD-SHELL","zkServer.sh","status || exit 1"]interval: 5stimeout: 3sretries: 3ports:- 2181:2181- 2888:2888- 3888:3888networks:- gio-netzoo2:image: giozk:v1hostname: zoo2deploy:replicas: 1placement:constraints: [node.hostname == ehr-ioplatform-0002]environment:ZOO_MY_ID: 2JVMFLAGS: -Xms1024m -Xmx1024mZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888healthcheck:test: ["CMD-SHELL","zkServer.sh","status || exit 1"]interval: 5stimeout: 3sretries: 3ports:- 2182:2181- 2887:2888- 3887:3888networks:- gio-netzoo3:image: giozk:v1hostname: zoo3deploy:replicas: 1placement:constraints: [ node.hostname == ehr-ioplatform-0003]environment:ZOO_MY_ID: 3JVMFLAGS: -Xms1024m -Xmx1024mZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888healthcheck:test: ["CMD-SHELL","zkServer.sh","status || exit 1"]interval: 5stimeout: 3sretries: 3ports:- 2183:2181- 2886:2888- 3886:3888networks:- gio-netnetworks:gio-net:external: true
codis需要开放的端口
单节点 | dashboard | 18080 | | —- | —- | | proxy | 11080,19000 | | fe | 8080 | | server | 6379 | | sentinel | 26379 |
swarm集群 ```shell cat > /etc/firewalld/services/codis.xml <
EOFthis is codis port
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 架构图

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
