Redis-Cluser架构设计
- Redis-Cluser采用无中心结构,每个节点都保存数据和整个集群状态,各个节点之间互相链接
- 节点间采用ping-pong机制互联,内部使用二进制协议传输优化速度和带宽
- Redis-Cluser会把所有物理节点映射到0-16383个slot上
- Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中
部署Redis-Cluser 3节点(一个副本)
- redis配置
daemonize yes port 7006 cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 15000 appendonly yes protected-mode no bind 0.0.0.0 masterauth "westos" requirepass westos
- 启动redis执行集群创建
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
- envoy配置
static_resources:
listeners:
- name: redis_listener
address:
socket_address:
address: 0.0.0.0
port_value: 1999
filter_chains:
- filters:
- name: envoy.filters.network.redis_proxy
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.redis_proxy.v3.RedisProxy
stat_prefix: egress_redis
settings:
op_timeout: 5s
prefix_routes:
catch_all_route:
cluster: redis_cluster
clusters:
- name: redis_cluster
connect_timeout: 1s
type: strict_dns # static
lb_policy: MAGLEV
typed_extension_protocol_options:
envoy.redis_proxy:
"@type": type.googleapis.com/google.protobuf.Struct
value:
auth_password:
inline_string: "westos"
load_assignment:
cluster_name: redis_cluster
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7001
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7002
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7003
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7004
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7005
- endpoint:
address:
socket_address:
address: 10.0.2.15
port_value: 7006
admin:
access_log_path: "/dev/null"
address:
socket_address:
address: 0.0.0.0
port_value: 8001
- 启动envoy
envoy -c envoy.yaml -l debug --service-cluster proxy
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。