今天了解了ES的集群和redis的主从配置。
首先记录es的集群。
es能够实现
1 集群化,就是说多个节点之间相互通信,拥有共同的集群名称,组成一个集群
2 节点间通信,就是说每个节点都知道master节点的信息,新增加一个节点的时候,新节点与master通信,被加入集群。ES支持竞争master机制,所以可以设置所有节点都是master:true,由es自动推选master。如果a节点...ping.discovery...参数配置的节点是B,而整个集群run起来后,master是c,突然b掉线,a仍然可以和c通信,也就是说,上述节点只是启动时候通信的节点。
3自动分片,分片和节点是没有太大关系的单位。一个es群组可以有2个节点,5个分片,其中节点1可能有1个分片,节点2有5个分片,倘若现在增加一个节点3,那可能节点1有1个分片,节点2有3个分片,节点3有1个分片。一张表,可以存在5个分片中。
4 新增节点通过广播查找master,也就是说新增节点可能不知道master的端口号,但是只要知道master的ip地址,一样可以被master找到,加入集群中。
5 当我们的程序需要与es建立连接时,es的地址可以是任意节点a的地址,并且建立了连接后,如果该a节点掉线,且a不是master的情况下,我们的程序仍然可以与es通信。为了保险起见,程序与es建立连接时,最好将所有节点的地址都写入。
redis的主从和mysql的主从有点类似,不用于分布式集群将信息分别放在不同的分片中,而是主从的信息完全一致。
配置也比较简单,可以有多个从redis,在从redis中,配置slaveof参数,加入主redis地址 。
【注意】当主redis挂掉后,不能马上重启主redis,因为主从更新的原理是从redis去读取主redis的操作日志,而当主redis重启后,操作日志是空的,因此主的空日志会清空从redis中的备份信息,也就失去了主从配置的意义。
破解方法:进入从redis,输入命令config get *,可以看到redis的配置信息。slaveof字段,目前写的是从redis的地址,执行config set slaveof NO ONE,将停止从redis对主redis的复制。
然后,修改web工程的redis地址为从redis的地址,重启web工程即可。
最后,修改旧主redis为现在新主redis的从redis,重启redis即可。