代码改变世界

Vertica 高可用性测试

2016-03-02 12:59  AlfredZhao  阅读(...)  评论(... 编辑 收藏

1.基本概念介绍

Vertica也是MPP架构的数据库,相比大家熟悉的MPP架构,比如Greenplum和hadoop这些产品,Vertica最大的不同就是没有主节点这个概念。
也就是说Vertica集群中(K-safe=1情况),任何一个节点宕机都不会影响到其他节点对外提供服务。
而在其他有主节点的架构中,一旦主节点挂掉,整个集群就会挂掉,所以还需要考虑进一步冗余主节点。

对架构有深入了解的朋友会问,没有主节点,那Vertica的元数据存放在哪里呢?
答案是存放在每一个节点中,因为元数据并不会很大,所以每个节点冗余元数据是可行的。

基于上面的理解,我们在一个3节点的Vertica集群测试环境中,任意停掉一个节点,其他节点都是可以对外提供服务的。

2.停止某节点服务

admintools 工具选择 “7 Advanced Menu” ,然后选 “2 Stop Vertica on Host” 或者 “3 Kill Vertica Process on Host”, 最后选择要停止服务的节点。

admintools -> 7  Advanced Menu -> 2  Stop Vertica on Host / 3  Kill Vertica Process on Host -> Select host(s) 

注:在选择“2 Stop Vertica on Host” 或者 “3 Kill Vertica Process on Host”,优先选择前者,前者停不掉才考虑后者杀掉。
这里杀掉第二个节点的vertica进程。

dbadmin=> select node_name, node_state from nodes;
     node_name     | node_state 
-------------------+------------
 v_testdb_node0001 | UP
 v_testdb_node0002 | DOWN
 v_testdb_node0003 | UP
(3 rows)

3.测试其他节点访问

第二个节点宕机,但和预计的情况一样,从第一个节点和第三个节点的访问数据,都可以正常访问到。

--说明节点1访问正常:
[dbadmin@vertica1 ~]$ vsql
Password: 

--说明节点3访问正常:
[dbadmin@vertica3 ~]$ vsql
Password: 

从节点2访问,会报错:

[dbadmin@vertica2 ~]$ vsql
vsql: could not connect to server: 拒绝连接
        Is the server running on host "???" and accepting
        TCP/IP connections on port 5433?

所以,应用端配置连接,建议不要简单的固定集群某个节点的IP地址,而应该想办法配置一组IP,实现当发现有IP地址不能访问,可以连接别的节点IP地址正常访问数据库的逻辑。