解决Pulsar部署脚本使用公网流量的问题

This commit is contained in:
ChenYi 2025-11-06 17:27:05 +08:00
parent 9b8adba8f5
commit 47ffada3a9
6 changed files with 60 additions and 37 deletions

View File

@ -5,6 +5,7 @@ SERVER_IP=192.168.111.174
PULSAR_BROKER_PORT=9093 PULSAR_BROKER_PORT=9093
PULSAR_ADMIN_PORT=9094 PULSAR_ADMIN_PORT=9094
PULSAR_ZOOKEEPER_PORT=2181 PULSAR_ZOOKEEPER_PORT=2181
PULSAR_BROKER_EXTERNAL_PORT=26974
# IoTDB配置 # IoTDB配置
IOTDB_PORT=30710 IOTDB_PORT=30710

View File

@ -1,6 +1,6 @@
services: services:
zookeeper: zookeeper:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: zookeeper container_name: zookeeper
hostname: zookeeper hostname: zookeeper
restart: unless-stopped restart: unless-stopped
@ -29,7 +29,7 @@ services:
start_period: 60s start_period: 60s
pulsar-cluster-init: pulsar-cluster-init:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-cluster-init container_name: pulsar-cluster-init
hostname: pulsar-cluster-init hostname: pulsar-cluster-init
command: > command: >
@ -42,7 +42,7 @@ services:
- pulsar-net - pulsar-net
bookie: bookie:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-bookie container_name: pulsar-bookie
hostname: pulsar-bookie hostname: pulsar-bookie
restart: unless-stopped restart: unless-stopped
@ -60,6 +60,8 @@ services:
- PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g - PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
- BOOKIE_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g - BOOKIE_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
- PULSAR_PREFIX_zkServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_zkServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
# Bookie 使用容器名作为 advertisedAddress确保 broker 通过内网连接
- PULSAR_PREFIX_advertisedAddress=pulsar-bookie
depends_on: depends_on:
zookeeper: zookeeper:
condition: service_healthy condition: service_healthy
@ -71,7 +73,7 @@ services:
- pulsar-bookkeeper-data:/pulsar/data/bookkeeper - pulsar-bookkeeper-data:/pulsar/data/bookkeeper
broker: broker:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-broker container_name: pulsar-broker
hostname: pulsar-broker hostname: pulsar-broker
restart: unless-stopped restart: unless-stopped
@ -89,9 +91,17 @@ services:
- PULSAR_PREFIX_zookeeperServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_zookeeperServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
- PULSAR_PREFIX_configurationStoreServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_configurationStoreServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
- PULSAR_PREFIX_bookkeeperClientPort=3181 - PULSAR_PREFIX_bookkeeperClientPort=3181
- PULSAR_PREFIX_brokerServicePort=${PULSAR_BROKER_PORT}
- PULSAR_PREFIX_webServicePort=${PULSAR_ADMIN_PORT} - PULSAR_PREFIX_webServicePort=${PULSAR_ADMIN_PORT}
- PULSAR_PREFIX_advertisedAddress=${SERVER_IP} # Web 管理接口对外通告与绑定
- PULSAR_PREFIX_webServiceBindAddress=0.0.0.0
- PULSAR_PREFIX_webServiceAdvertisedAddress=${SERVER_IP}
# 多监听器配置internal=容器内网(9093)external=公网(单独端口)
# bindAddresses: 为不同监听器绑定不同端口,便于根据端口识别 listenerName
- PULSAR_PREFIX_bindAddresses=internal:pulsar://0.0.0.0:${PULSAR_BROKER_PORT},external:pulsar://0.0.0.0:${PULSAR_BROKER_EXTERNAL_PORT}
# advertisedListeners: internal 通告容器名与内网端口external 通告公网 IP 与外网端口
- PULSAR_PREFIX_advertisedListeners=internal:pulsar://pulsar-broker:${PULSAR_BROKER_PORT},external:pulsar://${SERVER_IP}:${PULSAR_BROKER_EXTERNAL_PORT}
# internalListenerName: 指定内部通信使用的监听器名称
- PULSAR_PREFIX_internalListenerName=internal
- PULSAR_PREFIX_managedLedgerDefaultEnsembleSize=1 - PULSAR_PREFIX_managedLedgerDefaultEnsembleSize=1
- PULSAR_PREFIX_managedLedgerDefaultWriteQuorum=1 - PULSAR_PREFIX_managedLedgerDefaultWriteQuorum=1
- PULSAR_PREFIX_managedLedgerDefaultAckQuorum=1 - PULSAR_PREFIX_managedLedgerDefaultAckQuorum=1
@ -114,6 +124,7 @@ services:
- PULSAR_PREFIX_nonPersistentTopicsEnabled=true - PULSAR_PREFIX_nonPersistentTopicsEnabled=true
ports: ports:
- "${PULSAR_BROKER_PORT}:${PULSAR_BROKER_PORT}" - "${PULSAR_BROKER_PORT}:${PULSAR_BROKER_PORT}"
- "${PULSAR_BROKER_EXTERNAL_PORT}:${PULSAR_BROKER_EXTERNAL_PORT}"
- "${PULSAR_ADMIN_PORT}:${PULSAR_ADMIN_PORT}" - "${PULSAR_ADMIN_PORT}:${PULSAR_ADMIN_PORT}"
depends_on: depends_on:
zookeeper: zookeeper:
@ -135,7 +146,7 @@ services:
start_period: 60s start_period: 60s
pulsar-init: pulsar-init:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-init container_name: pulsar-init
hostname: pulsar-init hostname: pulsar-init
command: > command: >
@ -169,7 +180,7 @@ services:
- pulsar-net - pulsar-net
iotdb-standalone-service: iotdb-standalone-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.4-standalone image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.5-standalone
hostname: iotdb-standalone hostname: iotdb-standalone
container_name: iotdb-standalone container_name: iotdb-standalone
restart: always restart: always
@ -253,7 +264,7 @@ services:
- pulsar-net - pulsar-net
admin-api-service: admin-api-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.admin:2025.0918.1348 image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.admin:2025.1103.1615
container_name: admin-api container_name: admin-api
hostname: admin-api hostname: admin-api
restart: always restart: always
@ -284,7 +295,7 @@ services:
- pulsar-net - pulsar-net
admin-web-service: admin-web-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.ui:2025.0918.1348 image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.ui:2025.1030.0949
container_name: admin-web container_name: admin-web
hostname: admin-web hostname: admin-web
restart: always restart: always

View File

@ -1,6 +1,6 @@
services: services:
iotdb-standalone: iotdb-standalone:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.4-standalone image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.5-standalone
hostname: iotdb-standalone hostname: iotdb-standalone
container_name: iotdb-standalone container_name: iotdb-standalone
restart: "no" restart: "no"

View File

@ -1,6 +1,6 @@
services: services:
zookeeper: zookeeper:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: zookeeper container_name: zookeeper
hostname: zookeeper hostname: zookeeper
restart: unless-stopped restart: unless-stopped
@ -29,7 +29,7 @@ services:
start_period: 60s start_period: 60s
bookie: bookie:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-bookie container_name: pulsar-bookie
hostname: pulsar-bookie hostname: pulsar-bookie
restart: unless-stopped restart: unless-stopped
@ -46,6 +46,8 @@ services:
- PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g - PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
- BOOKIE_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g - BOOKIE_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
- PULSAR_PREFIX_zkServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_zkServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
# Bookie 使用容器名作为 advertisedAddress确保 broker 通过内网连接
- PULSAR_PREFIX_advertisedAddress=pulsar-bookie
depends_on: depends_on:
zookeeper: zookeeper:
condition: service_healthy condition: service_healthy
@ -61,7 +63,7 @@ services:
start_period: 60s start_period: 60s
broker: broker:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6 image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.1.1
container_name: pulsar-broker container_name: pulsar-broker
hostname: pulsar-broker hostname: pulsar-broker
restart: unless-stopped restart: unless-stopped
@ -79,9 +81,17 @@ services:
- PULSAR_PREFIX_zookeeperServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_zookeeperServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
- PULSAR_PREFIX_configurationStoreServers=zookeeper:${PULSAR_ZOOKEEPER_PORT} - PULSAR_PREFIX_configurationStoreServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
- PULSAR_PREFIX_bookkeeperClientPort=3181 - PULSAR_PREFIX_bookkeeperClientPort=3181
- PULSAR_PREFIX_brokerServicePort=${PULSAR_BROKER_PORT}
- PULSAR_PREFIX_webServicePort=${PULSAR_ADMIN_PORT} - PULSAR_PREFIX_webServicePort=${PULSAR_ADMIN_PORT}
- PULSAR_PREFIX_advertisedAddress=${SERVER_IP} # Web 管理接口对外通告与绑定
- PULSAR_PREFIX_webServiceBindAddress=0.0.0.0
- PULSAR_PREFIX_webServiceAdvertisedAddress=${SERVER_IP}
# 多监听器配置internal=容器内网(9093)external=公网(单独端口)
# bindAddresses: 为不同监听器绑定不同端口,便于根据端口识别 listenerName
- PULSAR_PREFIX_bindAddresses=internal:pulsar://0.0.0.0:${PULSAR_BROKER_PORT},external:pulsar://0.0.0.0:${PULSAR_BROKER_EXTERNAL_PORT}
# advertisedListeners: internal 通告容器名与内网端口external 通告公网 IP 与外网端口
- PULSAR_PREFIX_advertisedListeners=internal:pulsar://pulsar-broker:${PULSAR_BROKER_PORT},external:pulsar://${SERVER_IP}:${PULSAR_BROKER_EXTERNAL_PORT}
# internalListenerName: 指定内部通信使用的监听器名称
- PULSAR_PREFIX_internalListenerName=internal
- PULSAR_PREFIX_managedLedgerDefaultEnsembleSize=1 - PULSAR_PREFIX_managedLedgerDefaultEnsembleSize=1
- PULSAR_PREFIX_managedLedgerDefaultWriteQuorum=1 - PULSAR_PREFIX_managedLedgerDefaultWriteQuorum=1
- PULSAR_PREFIX_managedLedgerDefaultAckQuorum=1 - PULSAR_PREFIX_managedLedgerDefaultAckQuorum=1
@ -104,6 +114,7 @@ services:
- PULSAR_PREFIX_nonPersistentTopicsEnabled=true - PULSAR_PREFIX_nonPersistentTopicsEnabled=true
ports: ports:
- "${PULSAR_BROKER_PORT}:${PULSAR_BROKER_PORT}" - "${PULSAR_BROKER_PORT}:${PULSAR_BROKER_PORT}"
- "${PULSAR_BROKER_EXTERNAL_PORT}:${PULSAR_BROKER_EXTERNAL_PORT}"
- "${PULSAR_ADMIN_PORT}:${PULSAR_ADMIN_PORT}" - "${PULSAR_ADMIN_PORT}:${PULSAR_ADMIN_PORT}"
depends_on: depends_on:
zookeeper: zookeeper:
@ -123,7 +134,7 @@ services:
start_period: 60s start_period: 60s
iotdb-standalone-service: iotdb-standalone-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.4-standalone image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.5-standalone
hostname: iotdb-standalone hostname: iotdb-standalone
container_name: iotdb-standalone container_name: iotdb-standalone
restart: always restart: always
@ -205,7 +216,7 @@ services:
- pulsar-net - pulsar-net
admin-api-service: admin-api-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.admin:2025.0918.1348 image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.admin:2025.1103.1615
container_name: admin-api container_name: admin-api
hostname: admin-api hostname: admin-api
restart: always restart: always
@ -235,7 +246,7 @@ services:
- pulsar-net - pulsar-net
admin-web-service: admin-web-service:
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.ui:2025.0918.1348 image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.ui:2025.1030.0949
container_name: admin-web container_name: admin-web
hostname: admin-web hostname: admin-web
restart: always restart: always

View File

@ -174,13 +174,13 @@ echo ""
echo "🎉 Pulsar 基本认证集群启动完成!" echo "🎉 Pulsar 基本认证集群启动完成!"
echo "" echo ""
echo "📋 连接信息:" echo "📋 连接信息:"
echo " Pulsar Broker: ${SERVER_IP}:$PULSAR_BROKER_PORT}" echo " Pulsar Broker: ${SERVER_IP}:${PULSAR_BROKER_PORT}"
echo " Pulsar Admin: http://${SERVER_IP}:$PULSAR_ADMIN_PORT}" echo " Pulsar Admin: http://${SERVER_IP}:${PULSAR_ADMIN_PORT}"
echo " IoTDB: ${SERVER_IP}:${IOTDB_PORT} (root/${IOTDB_ROOT_PASSWORD})" echo " IoTDB: ${SERVER_IP}:${IOTDB_PORT} (root/${IOTDB_ROOT_PASSWORD})"
echo " Redis: ${SERVER_IP}:6379" echo " Redis: ${SERVER_IP}:6379"
echo " MySQL: ${SERVER_IP}:$MYSQL_PORT}" echo " MySQL: ${SERVER_IP}:${MYSQL_PORT}"
echo " Admin API: http://${SERVER_IP}:$ADMIN_API_PORT}" echo " Admin API: http://${SERVER_IP}:${ADMIN_API_PORT}"
echo " Admin UI: http://${SERVER_IP}:$ADMIN_WEB_PORT}" echo " Admin UI: http://${SERVER_IP}:${ADMIN_WEB_PORT}"
echo " 用户名: ${PULSAR_ADMIN_USER}" echo " 用户名: ${PULSAR_ADMIN_USER}"
echo " 密码: ${PULSAR_ADMIN_PASSWORD}" echo " 密码: ${PULSAR_ADMIN_PASSWORD}"
echo "" echo ""
@ -190,7 +190,7 @@ echo " 查看日志: docker compose logs -f"
echo " 停止服务: docker compose down" echo " 停止服务: docker compose down"
echo "" echo ""
echo "🧪 测试连接:" echo "🧪 测试连接:"
echo " Pulsar: curl -u $PULSAR_ADMIN_USER}:$PULSAR_ADMIN_PASSWORD} http://$SERVER_IP}:$PULSAR_ADMIN_PORT}/admin/v2/clusters" echo " Pulsar: curl -u ${PULSAR_ADMIN_USER}:${PULSAR_ADMIN_PASSWORD} http://${SERVER_IP}:${PULSAR_ADMIN_PORT}/admin/v2/clusters"
echo " Redis: redis-cli -h ${SERVER_IP} -p 6379 ping" echo " Redis: redis-cli -h ${SERVER_IP} -p 6379 ping"
echo " MySQL: mysql -h ${SERVER_IP} -P ${MYSQL_PORT} -uroot -p${MYSQL_ROOT_PASSWORD} -e 'SELECT 1'" echo " MySQL: mysql -h ${SERVER_IP} -P ${MYSQL_PORT} -uroot -p${MYSQL_ROOT_PASSWORD} -e 'SELECT 1'"
echo " IoTDB: docker exec -it iotdb-standalone ./start-cli.sh -h iotdb-standalone -u root -p Lixiao@1980" echo " IoTDB: docker exec -it iotdb-standalone ./start-cli.sh -h iotdb-standalone -u root -p Lixiao@1980"

View File

@ -4,19 +4,19 @@
"CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.90.3:4200" "CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.90.3:4200"
}, },
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB2;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;" "Default": "Data Source=47.110.53.196;Port=13306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
}, },
"Hangfire": { "Hangfire": {
"Redis": { "Redis": {
"Host": "192.168.111.174:30712,password=1q3J@BGf!yhTaD46nS#", "Host": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#",
"DB": "2" "DB": "2"
} }
}, },
"Redis": { "Redis": {
"Configuration": "192.168.111.174:30712,password=1q3J@BGf!yhTaD46nS#,defaultdatabase=5" "Configuration": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#,defaultdatabase=5"
}, },
"Kafka": { "Kafka": {
"BootstrapServers": "47.110.62.104:9094,192.168.111.174:9094,47.110.60.222:9094", "BootstrapServers": "47.110.62.104:9094,47.110.53.196:9094,47.110.60.222:9094",
"EnableFilter": true, "EnableFilter": true,
"EnableAuthorization": false, "EnableAuthorization": false,
"SaslUserName": "lixiao", "SaslUserName": "lixiao",
@ -26,8 +26,8 @@
"TaskThreadCount": -1 "TaskThreadCount": -1
}, },
"Pulsar": { "Pulsar": {
"ServiceUrl": "pulsar://192.168.111.174:9093", "ServiceUrl": "pulsar://47.110.53.196:9093",
"WebUrl": "http://192.168.111.174:9094", "WebUrl": "http://47.110.53.196:9094",
"UserName": "admin", "UserName": "admin",
"TenantName": "1YMVZZkAkRArjxSD8457", "TenantName": "1YMVZZkAkRArjxSD8457",
"Namespace": "OneNET", "Namespace": "OneNET",
@ -56,10 +56,10 @@
"IoTDBOptions": { "IoTDBOptions": {
"UserName": "root", "UserName": "root",
"Password": "Lixiao@1980", "Password": "Lixiao@1980",
//"TreeModelClusterList": [ "192.168.111.174:6667", "47.110.60.222:6667", "47.110.62.104:6667" ], //"TreeModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
//"TableModelClusterList": [ "192.168.111.174:6667", "47.110.60.222:6667", "47.110.62.104:6667" ], //"TableModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
"TreeModelClusterList": [ "192.168.111.174:30710" ], "TreeModelClusterList": [ "47.110.53.196:30710" ],
"TableModelClusterList": [ "192.168.111.174:30710" ], "TableModelClusterList": [ "47.110.53.196:30710" ],
"PoolSize": 32, "PoolSize": 32,
"DataBaseName": "jisheiotdata", "DataBaseName": "jisheiotdata",
"OpenDebugMode": false, "OpenDebugMode": false,
@ -95,7 +95,7 @@
} }
}, },
"FreeRedisOptions": { "FreeRedisOptions": {
"ConnectionString": "192.168.111.174:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14", "ConnectionString": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
"UseDistributedCache": true "UseDistributedCache": true
}, },
"FreeSqlProviderOptions": { "FreeSqlProviderOptions": {