From eb2a9d540e1e3fc36bd5bba788b8218b8318998b Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 15:06:49 +0800 Subject: [PATCH 1/7] Support mongodb cluster --- internal/msg_gateway/gate/ws_server.go | 2 +- pkg/common/config/config.go | 22 +++++++++++----------- pkg/common/constant/constant.go | 2 +- pkg/common/db/model.go | 20 +++++++++++++++++--- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 9b61318b3..09af4a4ea 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -90,7 +90,7 @@ func (ws *WServer) readMsg(conn *UserConn) { log.NewInfo("", "this is a pingMessage") } if err != nil { - log.Error("", "WS ReadMsg error ", " userIP", conn.RemoteAddr().String(), "userUid", "platform", "error", err.Error()) + log.NewWarn("", "WS ReadMsg error ", " userIP", conn.RemoteAddr().String(), "userUid", "platform", "error", err.Error()) userCount-- ws.delUserConn(conn) return diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 56cc66bb7..5714dff2e 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -103,17 +103,17 @@ type config struct { SlowThreshold int `yaml:"slowThreshold"` } Mongo struct { - DBUri string `yaml:"dbUri"` - DBAddress string `yaml:"dbAddress"` - DBDirect bool `yaml:"dbDirect"` - DBTimeout int `yaml:"dbTimeout"` - DBDatabase string `yaml:"dbDatabase"` - DBSource string `yaml:"dbSource"` - DBUserName string `yaml:"dbUserName"` - DBPassword string `yaml:"dbPassword"` - DBMaxPoolSize int `yaml:"dbMaxPoolSize"` - DBRetainChatRecords int `yaml:"dbRetainChatRecords"` - ChatRecordsClearTime string `yaml:"chatRecordsClearTime"` + DBUri string `yaml:"dbUri"` + DBAddress []string `yaml:"dbAddress"` + DBDirect bool `yaml:"dbDirect"` + DBTimeout int `yaml:"dbTimeout"` + DBDatabase string `yaml:"dbDatabase"` + DBSource string `yaml:"dbSource"` + DBUserName string `yaml:"dbUserName"` + DBPassword string `yaml:"dbPassword"` + DBMaxPoolSize int `yaml:"dbMaxPoolSize"` + DBRetainChatRecords int `yaml:"dbRetainChatRecords"` + ChatRecordsClearTime string `yaml:"chatRecordsClearTime"` } Redis struct { DBAddress []string `yaml:"dbAddress"` diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 3642b31c3..aa7a747cf 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -337,4 +337,4 @@ const StatisticsTimeInterval = 60 const MaxNotificationNum = 100 -const CurrentVersion = "v2.3.3" +const CurrentVersion = "v2.3.3-rc0" diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 7fe53b77a..88236f4a4 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -58,15 +58,29 @@ func init() { // example: mongodb://$user:$password@mongo1.mongo:27017,mongo2.mongo:27017,mongo3.mongo:27017/$DBDatabase/?replicaSet=rs0&readPreference=secondary&authSource=admin&maxPoolSize=$DBMaxPoolSize uri = config.Config.Mongo.DBUri } else { + //mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB + mongodbHosts := "" + for i, v := range config.Config.Mongo.DBAddress { + if i == len(config.Config.Mongo.DBAddress)-1 { + mongodbHosts += v + } else { + mongodbHosts += v + "," + } + } + if config.Config.Mongo.DBPassword != "" && config.Config.Mongo.DBUserName != "" { - uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin", config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, config.Config.Mongo.DBAddress, + // clientOpts := options.Client().ApplyURI("mongodb://localhost:27017,localhost:27018/?replicaSet=replset") + //mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] + uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", + config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } else { - uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d&authSource=admin", - config.Config.Mongo.DBAddress, config.Config.Mongo.DBDatabase, + uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d&authSource=admin&replicaSet=replset", + mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } } + mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err != nil { fmt.Println(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) From 3c4227696c2d4837b9c4d1b044301bdb28361a1f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 15:08:48 +0800 Subject: [PATCH 2/7] Support mongodb cluster --- config/config.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index f474fc06a..3addfa849 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -27,13 +27,14 @@ mysql: mongo: dbUri: ""#当dbUri值不为空则直接使用该值 - dbAddress: 127.0.0.1:37017 #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 + #dbAddress: 127.0.0.1:37017 #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 + dbAddress: [127.0.0.1:37017] #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 dbDirect: false dbTimeout: 60 dbDatabase: openIM #mongo db 默认即可 dbSource: admin - dbUserName: #mongo用户名,建议先不设置 - dbPassword: #mongo密码,建议先不设置 + dbUserName: openIM #mongo用户名,建议先不设置 + dbPassword: openIM== #mongo密码,建议先不设置 dbMaxPoolSize: 100 dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 chatRecordsClearTime: "* * * * *" # 每天凌晨3点清除消息,该配置和linux定时任务一样, 清理操作建议设置在用户活跃少的时候 # 0 3 * * * @@ -122,7 +123,7 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 appBucket: app # 存储app的桶 location: us-east-1 endpoint: http://127.0.0.1:10005 #minio外网ip 这个ip是给客户端访问的 - endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以填写 + endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以 endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问 accessKeyID: user12345 secretAccessKey: key12345 From 3bdafc2a11257566bef90740da77149a8fe23482 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 15:11:13 +0800 Subject: [PATCH 3/7] Support mongodb cluster --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 3addfa849..8b8b3225d 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -8,7 +8,7 @@ etcd: etcdSchema: openim #默认即可 etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可 userName: - password: + password: k8sMod: false #开启k8s模式 使用pod里面环境变量请求services调用服务 而并非etcd From 98fe00a171b29c6550a3e0bea4854b76e5e28f02 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 15:14:02 +0800 Subject: [PATCH 4/7] Support mongodb cluster --- pkg/common/db/model.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 88236f4a4..c5b1fb6be 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -71,7 +71,8 @@ func init() { if config.Config.Mongo.DBPassword != "" && config.Config.Mongo.DBUserName != "" { // clientOpts := options.Client().ApplyURI("mongodb://localhost:27017,localhost:27018/?replicaSet=replset") //mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] - uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", + //uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", + uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin", config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } else { From aa41dc3650d1ce3b1dfc1c86f956613988799744 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 15:54:26 +0800 Subject: [PATCH 5/7] Support mongodb cluster --- pkg/common/db/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index c5b1fb6be..c5e2349fe 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -76,7 +76,7 @@ func init() { config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } else { - uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d&authSource=admin&replicaSet=replset", + uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d&authSource=admin", mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } From 06117c98b192b496b2b914264c4c59963dcdc83e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 16:17:21 +0800 Subject: [PATCH 6/7] Support mongodb cluster --- config/config.yaml | 2 +- pkg/common/db/model.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 8b8b3225d..43421630d 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -28,7 +28,7 @@ mysql: mongo: dbUri: ""#当dbUri值不为空则直接使用该值 #dbAddress: 127.0.0.1:37017 #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 - dbAddress: [127.0.0.1:37017] #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 + dbAddress: [ 127.0.0.1:37017 ] #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 dbDirect: false dbTimeout: 60 dbDatabase: openIM #mongo db 默认即可 diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index c5e2349fe..979609325 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -72,7 +72,7 @@ func init() { // clientOpts := options.Client().ApplyURI("mongodb://localhost:27017,localhost:27018/?replicaSet=replset") //mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] //uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", - uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin", + uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } else { From 82cd3fd9f1d527e1434a2d33e08565e2171a5f0e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 16 Sep 2022 16:29:37 +0800 Subject: [PATCH 7/7] Support mongodb cluster --- pkg/common/db/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 979609325..c5e2349fe 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -72,7 +72,7 @@ func init() { // clientOpts := options.Client().ApplyURI("mongodb://localhost:27017,localhost:27018/?replicaSet=replset") //mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] //uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", - uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin&replicaSet=replset", + uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin", config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, mongodbHosts, config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) } else {