mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-08-08 04:06:31 +08:00
feat: support redis sentinel. (#3423)
* feat: support redis sentinel. * update docker compose contents. * update config contents. * revert content. * supoort redisMode. * update config. * remvove print.
This commit is contained in:
parent
1baf9a8e0f
commit
8f7b02979d
@ -1,7 +1,14 @@
|
|||||||
address: [ localhost:16379 ]
|
address: [localhost:16379]
|
||||||
username:
|
username:
|
||||||
password: openIM123
|
password: openIM123
|
||||||
clusterMode: false
|
# redis Mode, including "standalone","cluster","sentinel"
|
||||||
|
redisMode: "standalone"
|
||||||
db: 0
|
db: 0
|
||||||
maxRetry: 10
|
maxRetry: 10
|
||||||
poolSize: 100
|
poolSize: 100
|
||||||
|
# Sentinel configuration (only used when redisMode is "sentinel")
|
||||||
|
sentinelMode:
|
||||||
|
masterName: "redis-master"
|
||||||
|
sentinelsAddrs: ["127.0.0.1:26379", "127.0.0.1:26380", "127.0.0.1:26381"]
|
||||||
|
routeByLatency: true
|
||||||
|
routeRandomly: true
|
||||||
|
2
go.mod
2
go.mod
@ -13,7 +13,7 @@ require (
|
|||||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/mitchellh/mapstructure v1.5.0
|
github.com/mitchellh/mapstructure v1.5.0
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.12
|
github.com/openimsdk/protocol v0.0.73-alpha.12
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.85
|
github.com/openimsdk/tools v0.0.50-alpha.91
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/prometheus/client_golang v1.18.0
|
github.com/prometheus/client_golang v1.18.0
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
|
4
go.sum
4
go.sum
@ -349,8 +349,8 @@ github.com/openimsdk/gomake v0.0.15-alpha.5 h1:eEZCEHm+NsmcO3onXZPIUbGFCYPYbsX5b
|
|||||||
github.com/openimsdk/gomake v0.0.15-alpha.5/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
github.com/openimsdk/gomake v0.0.15-alpha.5/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.12 h1:2NYawXeHChYUeSme6QJ9pOLh+Empce2WmwEtbP4JvKk=
|
github.com/openimsdk/protocol v0.0.73-alpha.12 h1:2NYawXeHChYUeSme6QJ9pOLh+Empce2WmwEtbP4JvKk=
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.12/go.mod h1:WF7EuE55vQvpyUAzDXcqg+B+446xQyEba0X35lTINmw=
|
github.com/openimsdk/protocol v0.0.73-alpha.12/go.mod h1:WF7EuE55vQvpyUAzDXcqg+B+446xQyEba0X35lTINmw=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.85 h1:OqTUYx6r7Zp/eH8FKB08XeNjPV405TUIG9QT6QQ+F+s=
|
github.com/openimsdk/tools v0.0.50-alpha.91 h1:4zXtTwwCIUawet1VDvnD3C/1E4N4ostDfh+RfL5nz90=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.85/go.mod h1:n2poR3asX1e1XZce4O+MOWAp+X02QJRFvhcLCXZdzRo=
|
github.com/openimsdk/tools v0.0.50-alpha.91/go.mod h1:n2poR3asX1e1XZce4O+MOWAp+X02QJRFvhcLCXZdzRo=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||||
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
||||||
|
@ -327,10 +327,18 @@ type Redis struct {
|
|||||||
Address []string `yaml:"address"`
|
Address []string `yaml:"address"`
|
||||||
Username string `yaml:"username"`
|
Username string `yaml:"username"`
|
||||||
Password string `yaml:"password"`
|
Password string `yaml:"password"`
|
||||||
ClusterMode bool `yaml:"clusterMode"`
|
RedisMode string `yaml:"redisMode"`
|
||||||
DB int `yaml:"db"`
|
DB int `yaml:"db"`
|
||||||
MaxRetry int `yaml:"maxRetry"`
|
MaxRetry int `yaml:"maxRetry"`
|
||||||
PoolSize int `yaml:"poolSize"`
|
PoolSize int `yaml:"poolSize"`
|
||||||
|
SentinelMode Sentinel `yaml:"sentinelMode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sentinel struct {
|
||||||
|
MasterName string `yaml:"masterName"`
|
||||||
|
SentinelAddrs []string `yaml:"sentinelsAddrs"`
|
||||||
|
RouteByLatency bool `yaml:"routeByLatency"`
|
||||||
|
RouteRandomly bool `yaml:"routeRandomly"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BeforeConfig struct {
|
type BeforeConfig struct {
|
||||||
@ -487,13 +495,19 @@ func (m *Mongo) Build() *mongoutil.Config {
|
|||||||
|
|
||||||
func (r *Redis) Build() *redisutil.Config {
|
func (r *Redis) Build() *redisutil.Config {
|
||||||
return &redisutil.Config{
|
return &redisutil.Config{
|
||||||
ClusterMode: r.ClusterMode,
|
RedisMode: r.RedisMode,
|
||||||
Address: r.Address,
|
Address: r.Address,
|
||||||
Username: r.Username,
|
Username: r.Username,
|
||||||
Password: r.Password,
|
Password: r.Password,
|
||||||
DB: r.DB,
|
DB: r.DB,
|
||||||
MaxRetry: r.MaxRetry,
|
MaxRetry: r.MaxRetry,
|
||||||
PoolSize: r.PoolSize,
|
PoolSize: r.PoolSize,
|
||||||
|
Sentinel: &redisutil.Sentinel{
|
||||||
|
MasterName: r.SentinelMode.MasterName,
|
||||||
|
SentinelAddrs: r.SentinelMode.SentinelAddrs,
|
||||||
|
RouteByLatency: r.SentinelMode.RouteByLatency,
|
||||||
|
RouteRandomly: r.SentinelMode.RouteRandomly,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ func NewDiscoveryRegister(discovery *config.Discovery, watchNames []string) (dis
|
|||||||
return standalone.GetSvcDiscoveryRegistry(), nil
|
return standalone.GetSvcDiscoveryRegistry(), nil
|
||||||
}
|
}
|
||||||
if runtimeenv.RuntimeEnvironment() == config.KUBERNETES {
|
if runtimeenv.RuntimeEnvironment() == config.KUBERNETES {
|
||||||
return kubernetes.NewKubernetesConnManager(discovery.Kubernetes.Namespace,
|
return kubernetes.NewConnManager(discovery.Kubernetes.Namespace, nil,
|
||||||
grpc.WithDefaultCallOptions(
|
grpc.WithDefaultCallOptions(
|
||||||
grpc.MaxCallSendMsgSize(1024*1024*20),
|
grpc.MaxCallSendMsgSize(1024*1024*20),
|
||||||
),
|
),
|
||||||
|
@ -26,7 +26,7 @@ func TestName111111(t *testing.T) {
|
|||||||
"172.16.8.124:7005",
|
"172.16.8.124:7005",
|
||||||
"172.16.8.124:7006",
|
"172.16.8.124:7006",
|
||||||
},
|
},
|
||||||
ClusterMode: true,
|
RedisMode: "cluster",
|
||||||
Password: "passwd123",
|
Password: "passwd123",
|
||||||
//Address: []string{"localhost:16379"},
|
//Address: []string{"localhost:16379"},
|
||||||
//Password: "openIM123",
|
//Password: "openIM123",
|
||||||
|
@ -28,6 +28,8 @@ import (
|
|||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const StructTagName = "yaml"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
MaxSeq = "MAX_SEQ:"
|
MaxSeq = "MAX_SEQ:"
|
||||||
MinSeq = "MIN_SEQ:"
|
MinSeq = "MIN_SEQ:"
|
||||||
@ -54,13 +56,14 @@ func readConfig[T any](dir string, name string) (*T, error) {
|
|||||||
if err := v.ReadInConfig(); err != nil {
|
if err := v.ReadInConfig(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
fn := func(config *mapstructure.DecoderConfig) {
|
|
||||||
config.TagName = "mapstructure"
|
|
||||||
}
|
|
||||||
var conf T
|
var conf T
|
||||||
if err := v.Unmarshal(&conf, fn); err != nil {
|
if err := v.Unmarshal(&conf, func(config *mapstructure.DecoderConfig) {
|
||||||
|
config.TagName = StructTagName
|
||||||
|
}); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &conf, nil
|
return &conf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +72,7 @@ func Main(conf string, del time.Duration) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mongodbConfig, err := readConfig[config.Mongo](conf, config.MongodbConfigFileName)
|
mongodbConfig, err := readConfig[config.Mongo](conf, config.MongodbConfigFileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user