openimsdk / open-im-server

IM Chat
https://openim.io
Apache License 2.0
13.35k stars 2.35k forks source link

[BUG] Not functioning properly #2353

Open taoyao-code opened 2 weeks ago

taoyao-code commented 2 weeks ago

OpenIM Server Version

3.7.1

Operating System and CPU Architecture

Linux (AMD)

Deployment Method

Docker Deployment

Bug Description and Steps to Reproduce

.env

# Docker images
MONGO_IMAGE=mongo:6.0.2                    # MongoDB server image version
REDIS_IMAGE=redis:7.0.0                    # Redis server image version
KAFKA_IMAGE=bitnami/kafka:3.5.1            # Kafka server image version
MINIO_IMAGE=minio/minio:RELEASE.2024-01-11T07-46-16Z  # MinIO server image version
PROMETHEUS_IMAGE=prom/prometheus:v2.51.2   # Prometheus monitoring system image version
ALERTMANAGER_IMAGE=prom/alertmanager:v0.27.0 # Alertmanager for Prometheus image version
GRAFANA_IMAGE=grafana/grafana:10.4.2       # Grafana visualization tool image version
ETCD_IMAGE=quay.io/coreos/etcd:v3.5.13

OPENIM_WEB_FRONT_IMAGE=openim/openim-web-front:release-v3.5.1
OPENIM_ADMIN_FRONT_IMAGE=openim/openim-admin-front:release-v1.7

NODE_EXPORTER_IMAGE=prom/node-exporter:v1.7.0 # Prometheus Node Exporter image version

# OpenIM server and chat service images
OPENIM_SERVER_IMAGE=openim/openim-server:release-v3.7 # OpenIM server application image version
#OPENIM_SERVER_IMAGE=registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:release-v3.7

OPENIM_CHAT_IMAGE=openim/openim-chat:release-v1.7 # OpenIM chat application image version
#OPENIM_CHAT_IMAGE=registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat:release-v1.7

# Directory for data storage
DATA_DIR=./

# MongoDB configuration
MONGO_ADDRESS="mongo:27017"                # Address of MongoDB server
MONGO_USERNAME=openIM                      # MongoDB username
MONGO_PASSWORD=openIM123                   # MongoDB password

# Kafka configuration
KAFKA_ADDRESS="kafka:9094"                 # Address of Kafka server

# Etcd configuration
ETCD_ADDRESS="etcd:2379"

# Redis configuration
REDIS_ADDRESS="redis_7:6379"                 # Address of Redis server
REDIS_PASSWORD=openIM123                   # Redis password

# MinIO configuration
MINIO_EXTERNAL_ADDRESS="http://external_ip:10005" # External address for MinIO needs to be manually modified
MINIO_INTERNAL_ADDRESS="minio:9000"        # Internal network address of MinIO
MINIO_ACCESS_KEY_ID=root                   # Access key ID for MinIO
MINIO_SECRET_ACCESS_KEY=openIM123          # Secret access key for MinIO
MINIO_PORT=10005                           # Port for MinIO server
MINIO_CONSOLE_PORT=10004                   # Console port for MinIO

# OpenIM configuration
OPENIM_SECRET=openIM123                    # Secret for OpenIM authentication
OPENIM_API_PORT=10002                      # API port for OpenIM server
OPENIM_MSG_GATEWAY_PORT=10001              # Message gateway port for OpenIM

# Ports for chat API and admin API
CHAT_API_PORT=10008                        # Chat service API port
ADMIN_API_PORT=10009                       # Admin API port

# Ports for OpenIM web and admin frontends
OPENIM_WEB_FRONT_PORT=11001                # Web frontend port for OpenIM
OPENIM_ADMIN_FRONT_PORT=11002              # Admin frontend port for OpenIM

# Monitoring ports
PROMETHEUS_PORT=19090                      # Port for Prometheus server
ALERT_MANAGER_PORT=19093                   # Port for Alert Manager
GRAFANA_PORT=13000                         # Port for Grafana
NODE_EXPORTER_PORT=19100                   # Port for Prometheus Node Exporter

# General settings
API_URL="http://openim-server:10002"       # API URL for OpenIM server
LOG_IS_STDOUT=true                         # Log output to standard out
LOG_LEVEL=3                                # Log level: 3 for production environments, 6 for test environments

GRAFANA_URL="http://external_ip:13000/"    # Define the URL for accessing the Grafana dashboard, specifying the external IP and port

docker-composer

version: '3'

networks:
  openim:
    driver: bridge

services:
  mongo:
    image: "${MONGO_IMAGE}"
    container_name: mongo
    command: ["/bin/bash", "-c", "/docker-entrypoint-initdb.d/mongo-init.sh; docker-entrypoint.sh mongod --wiredTigerCacheSizeGB 1 --auth"]
    volumes:
      - "${DATA_DIR}/components/mongodb/data/db:/data/db"
      - "${DATA_DIR}/components/mongodb/data/logs:/data/logs"
      - "${DATA_DIR}/components/mongodb/data/conf:/etc/mongo"
      - "./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro"
    environment:
      - TZ=Asia/Shanghai
      - wiredTigerCacheSizeGB=1
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=openIM123
      - MONGO_INITDB_DATABASE=openim_v3
      - MONGO_OPENIM_USERNAME=${MONGO_USERNAME}
      - MONGO_OPENIM_PASSWORD=${MONGO_PASSWORD}
    restart: always
    networks:
      - openim

  redis:
    image: "${REDIS_IMAGE}"
    container_name: redis_7
    volumes:
      - "${DATA_DIR}/components/redis/data:/data"
      - "${DATA_DIR}/components/redis/config/redis.conf:/usr/local/redis/config/redis.conf"
    environment:
      TZ: Asia/Shanghai
    restart: always
    sysctls:
      net.core.somaxconn: 1024
    command: [ "redis-server", "/usr/local/redis/config/redis.conf", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes" ]
    networks:
      - openim

  etcd:
    image: "${ETCD_IMAGE}"
    container_name: etcd
    ports:
      - "12379:2379"
      - "12380:2380"
    environment:
      - ETCD_NAME=s1
      - ETCD_DATA_DIR=/etcd-data
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER=s1=http://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER_TOKEN=tkn
      - ETCD_INITIAL_CLUSTER_STATE=new
    restart: always
    networks:
      - openim

  kafka:
    image: "${KAFKA_IMAGE}"
    container_name: kafka
    user: root
    restart: always
    volumes:
      - ./scripts/create-topic.sh:/opt/bitnami/kafka/create-topic.sh
      - "${DATA_DIR}/components/kafka:/bitnami/kafka"
    command: >
      bash -c "/opt/bitnami/scripts/kafka/run.sh & /opt/bitnami/kafka/create-topic.sh; wait"
    environment:
      TZ: Asia/Shanghai
      KAFKA_CFG_NODE_ID: 0
      KAFKA_CFG_PROCESS_ROLES: controller,broker
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka:9093
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,EXTERNAL://kafka:9094
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
    networks:
      - openim

  minio:
    image: "${MINIO_IMAGE}"
    ports:
      - "${MINIO_PORT}:9000"
      - "${MINIO_CONSOLE_PORT}:9090"
    container_name: minio
    volumes:
      - "${DATA_DIR}/components/mnt/data:/data"
      - "${DATA_DIR}/components/mnt/config:/root/.minio"
    environment:
      TZ: Asia/Shanghai
      MINIO_ROOT_USER: "${MINIO_ACCESS_KEY_ID}"
      MINIO_ROOT_PASSWORD: "${MINIO_SECRET_ACCESS_KEY}"
    restart: always
    command: minio server /data --console-address ':9090'
    networks:
      - openim

  openim-web-front:
    image: ${OPENIM_WEB_FRONT_IMAGE}
    container_name: openim-web-front
    restart: always
    ports:
      - "${OPENIM_WEB_FRONT_PORT}:80"
    networks:
      - openim

  openim-admin-front:
    image: ${OPENIM_ADMIN_FRONT_IMAGE}
    container_name: openim-admin-front
    restart: always
    ports:
      - "${OPENIM_ADMIN_FRONT_PORT}:80"
    networks:
      - openim

  prometheus:
    image: ${PROMETHEUS_IMAGE}
    container_name: prometheus
    hostname: prometheus
    restart: always
    ports:
      - "${PROMETHEUS_PORT}:9090"
    networks:
      - openim

  alertmanager:
    image: ${ALERTMANAGER_IMAGE}
    container_name: alertmanager
    hostname: alertmanager
    restart: always
    ports:
      - "${ALERT_MANAGER_PORT}:9093"
    networks:
      - openim

  grafana:
    image: ${GRAFANA_IMAGE}
    container_name: grafana
    hostname: grafana
    user: root
    restart: always
    ports:
      - "${GRAFANA_PORT}:3000"
    volumes:
      - "${DATA_DIR}/components/grafana:/var/lib/grafana"
    environment:
      - GF_SECURITY_ALLOW_EMBEDDING=true
      - GF_SESSION_COOKIE_SAMESITE=none
      - GF_SESSION_COOKIE_SECURE=true
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
    networks:
      - openim

  node-exporter:
    image: ${NODE_EXPORTER_IMAGE}
    container_name: node-exporter
    hostname: node-exporter
    restart: always
    ports:
      - "${NODE_EXPORTER_PORT}:9100"
    networks:
      - openim

  openim-server:
    image: ${OPENIM_SERVER_IMAGE}
    container_name: openim-server
    ports:
      - "${OPENIM_MSG_GATEWAY_PORT}:10001"
      - "${OPENIM_API_PORT}:10002"
    healthcheck:
      test: [ "CMD", "sh", "-c", "mage check" ]
      interval: 5s
      timeout: 60s
      retries: 10
    environment:
      - IMENV_MONGODB_ADDRESS=${MONGO_ADDRESS}
      - IMENV_MONGODB_USERNAME=${MONGO_USERNAME}
      - IMENV_MONGODB_PASSWORD=${MONGO_PASSWORD}
      - IMENV_KAFKA_ADDRESS=${KAFKA_ADDRESS}
      - IMENV_DISCOVERY_ETCD_ADDRESS=${ETCD_ADDRESS}
      - IMENV_REDIS_ADDRESS=${REDIS_ADDRESS}
      - IMENV_REDIS_PASSWORD=${REDIS_PASSWORD}
      - IMENV_MINIO_INTERNALADDRESS=${MINIO_INTERNAL_ADDRESS}
      - IMENV_MINIO_EXTERNALADDRESS=${MINIO_EXTERNAL_ADDRESS}
      - IMENV_MINIO_ACCESSKEYID=${MINIO_ACCESS_KEY_ID}
      - IMENV_MINIO_SECRETACCESSKEY=${MINIO_SECRET_ACCESS_KEY}
      - IMENV_SHARE_SECRET=${OPENIM_SECRET}
      - IMENV_LOG_ISSTDOUT=${LOG_IS_STDOUT}
      - IMENV_LOG_REMAINLOGLEVEL=${LOG_LEVEL}
      - IMENV_OPENIM_API_PROMETHEUS_GRAFANAURL=${GRAFANA_URL}
    restart: always
    networks:
      - openim

  openim-chat:
    image: ${OPENIM_CHAT_IMAGE}
    container_name: openim-chat
    healthcheck:
      test: [ "CMD", "sh", "-c", "mage check" ]
      interval: 5s
      timeout: 60s
      retries: 10
    environment:
      - CHATENV_MONGODB_ADDRESS=${MONGO_ADDRESS}
      - CHATENV_MONGODB_USERNAME=${MONGO_USERNAME}
      - CHATENV_MONGODB_PASSWORD=${MONGO_PASSWORD}
      - CHATENV_DISCOVERY_ETCD_ADDRESS=${ETCD_ADDRESS}
      - CHATENV_REDIS_ADDRESS=${REDIS_ADDRESS}
      - CHATENV_REDIS_PASSWORD=${REDIS_PASSWORD}
      - CHATENV_SHARE_OPENIM_SECRET=${OPENIM_SECRET}
      - CHATENV_SHARE_OPENIM_APIURL=${API_URL}
      - CHATENV_LOG_ISSTDOUT=${LOG_IS_STDOUT}
      - CHATENV_LOG_REMAINLOGLEVEL=${LOG_LEVEL}
    ports:
      - "${CHAT_API_PORT}:10008"
      - "${ADMIN_API_PORT}:10009"
    restart: always
    networks:
      - openim

Screenshots Link

docker-compose (1).log

skiffer-git commented 2 weeks ago

openim-chat | Error: failed to connect to MongoDB, URI=mongodb://openIM:openIM123@mongo:27017/openim_v3?maxPoolSize=100: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: mongo:27017, Type: Unknown, Last error: dial tcp 192.168.176.4:27017: i/o timeout }, ] } openim-chat | chat-rpc exit -1: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: mongo:27017, Type: Unknown, Last error: dial tcp 192.168.176.4:27017: i/o timeout }, ] } openim-chat | failed to connect to MongoDB, URI=mongodb://openIM:openIM123@mongo:27017/openim_v3?maxPoolSize=100 openim-chat | github.com/openimsdk/tools/errs.WrapMsg openim-chat | /go/pkg/mod/github.com/openimsdk/tools@v0.0.49-alpha.18/errs/coderr.go:134 openim-chat | github.com/openimsdk/tools/db/mongoutil.NewMongoDB openim-chat | /go/pkg/mod/github.com/openimsdk/tools@v0.0.49-alpha.18/db/mongoutil/mongo.go:77 openim-chat | github.com/openimsdk/chat/internal/rpc/chat.Start openim-chat | /openim-chat/internal/rpc/chat/start.go:36 openim-chat | github.com/openimsdk/chat/pkg/common/startrpc.Start[...] openim-chat | /openim-chat/pkg/common/startrpc/start.go:79 openim-chat | github.com/openimsdk/chat/pkg/common/cmd.(ChatRpcCmd).runE openim-chat | /openim-chat/pkg/common/cmd/chat_rpc.go:55 openim-chat | github.com/openimsdk/chat/pkg/common/cmd.NewChatRpcCmd.func1 openim-chat | /openim-chat/pkg/common/cmd/chat_rpc.go:45 openim-chat | github.com/spf13/cobra.(Command).execute openim-chat | /go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:983

skiffer-git commented 2 weeks ago

Which configuration items have you modified?

taoyao-code commented 2 weeks ago

There is a very strange problem at present. It is normal on a new server, but when the corresponding configuration file is completely complicated to this server, the problem of inaccessibility occurs.

Modify the redis container_name in the docker-compose.yaml file to: redis_7