
# 对接ELB访问CloudTable ClickHouse集群
#### 应用场景
对于访问量较大的业务，可以通过ELB设置相应的分配策略，将访问量均匀的分配到多个后端服务器处理。同时您还可以开启会话保持功能，保证同一个客户请求转发到同一个后端服务器，消除单点故障，从而提升访问效率。
此章节为您介绍对接ELB访问ClickHouse集群。将ClickHouse集群的Server节点IP添加到ELB后端服务器中，通过ELB地址访问ClickHouse集群。了解ELB请参见[ELB产品介绍](https://support.huaweicloud.com/productdesc-elb/elb_pro_0007.html)。
#### 操作流程
- [步骤一：创建ELB]
- [步骤二：打通网络（可选）]
- [步骤三：获取CloudTable ClickHouse集群Server节点IP地址]
- [步骤四：绑定ELB]
- [步骤五：使用ELB地址访问ClickHouse集群]
 
#### 准备工作
- 已注册华为账号并开通华为云，具体请参见[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)，且在使用CloudTable前检查账号状态，账号不能处于欠费或冻结状态。
- 已创建虚拟私有云和子网，参见创建[虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
- 已[创建CloudTable ClickHouse集群](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0300.html)。
 
 #### 步骤一：创建ELB
1. 登录[弹性负载均衡控制台](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/create/custom)。
2. 在"负载均衡器"界面右上方单击"购买弹性负载均衡"。
3. 在"购买弹性负载均衡"界面，配置以下参数，其他参数保持默认即可：
   - 网络型（TCP/UDP）。
   
   - 开启IP类型后端。
    
4. 单击"立即购买"，确认配置信息，并单击"提交"。
5. 创建完成后，在"负载均衡器"界面可看到新建的负载均衡器。查看并获取该负载均衡器的公网IP地址。 详细操作步骤请参考弹性负载均衡《用户指南》[创建独享型ELB](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)。
   
 
 #### 步骤二：打通网络（可选）
前提：如果ELB和ClickHouse集群不在同一个VPC，则需要创建对等连接。
创建对等连接，请参见虚拟私有云《用户指南》"[对等连接](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html)"章节。
 #### 步骤三：获取CloudTable ClickHouse集群Server节点IP地址
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 选择需要操作的ClickHouse集群，单击"集群名称"，进入集群详情页。
3. 获取Server节点IP。
   图1获取Server节点IP。   
   ![](https://support.huaweicloud.com/bestpractice-cloudtable/zh-cn_image_0000002222743165.png "点击放大") 
 
 #### 步骤四：绑定ELB
1. 登录[弹性负载均衡控制台](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/create/custom)。
2. 单击"弹性负载均衡 \> 我的ELB"，进入弹性负载均衡页面。
3. 选择需要操作的ELB，单击操作列的"添加监听器"。
4. 进入添加监听器配置页面，配置参数，请参见[添加监听器](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0200.html)。
   1. 前端协议TCP，前端端口8123/9000/8443/9440。
   
   2. 访问控制设置为"白名单"，防止引发安全问题。
   
   3. 添加后端服务器，选择"IP类型后端"。
   
   4. "IP类型后端IP"填写[步骤三]中获取的Server节点地址，"业务端口"填写8123/9000/8443/9440。
      ![](https://support.huaweicloud.com/bestpractice-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
      业务端口使用方法：后端端口和前端端口填写一致，例如前端端口"8123"，则后端端口填写"8123"。
      - 8123：ClickHouse非安全集群的Http协议端口。
      
      - 9000：ClickHouse非安全集群的TCP协议端口。
      
      - 8443：ClickHouse安全集群的Https协议端口。
      
      - 9440：ClickHouse安全集群的安全TCP安全端口。
        
    
5. 监听器添加后，查看后端服务器是否添加成功。
   1. 进入"弹性负载均衡 \> 负载均衡器 \> 名称 \> 监听器"页面。
   
   2. 单击监听器名称进入基本信息页签，单击"后端服务器组（监听器默认转发）"模块中"后端服务器组"右边的链接。
   
   3. 进入后端服务器页面，单击"后端服务器"页签，在IP类型后端处查看后端服务器。
      图2查看后端服务器   
      ![](https://support.huaweicloud.com/bestpractice-cloudtable/zh-cn_image_0000002332345017.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
      如果集群扩容，则需要更新ELB的后端服务器。
      
    
 
 #### 步骤五：使用ELB地址访问ClickHouse集群
1. 集群安全组是否有添加ELB子网。
   1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
   
   2. 进入"集群管理 "页面，单击集群名称，进入集群详情页面。
   
   3. 单击"网络配置"模块，安全组名称，进入安全组管理页面。
   
   4. 单击"安全组名称 \> 入方向规则"，查看是否添加ELB子网网段。
      1. 如果添加ELB子网网段，则不需要重复添加。
      
      2. 如果没有添加ELB子网网段，则添加入方向规则，请参考[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。
       
    
2. 监听器创建成功后，使用ELB地址和前端协议端口访问ClickHouse集群。获取IP地址和协议端口：
   1. IP地址：单击"负载均衡器名称 \> 基本信息"，在服务地址处获取。
      图3获取IP地址   
      ![](https://support.huaweicloud.com/bestpractice-cloudtable/zh-cn_image_0000002187552314.png "点击放大") 
   
   2. 协议端口：单击"负载均衡器名称 \> 监听器"，在前端协议/端口处获取。
      图4获取协议端口   
      ![](https://support.huaweicloud.com/bestpractice-cloudtable/zh-cn_image_0000002222798317.png "点击放大") 
    
3. 连接集群。对接ELB，不推荐使用客户端直连方式连接集群。 非安全集群连接命令。
   ```
   echo 'SELECT 1' | curl  -k 'http://IP:8123/?user=test_user&password=***' -d @-
   ```
   安全集群连接命令。
   ```
   echo 'SELECT 1' | curl  -k 'https://IP:8443/?user=test_user&password=***'  -d @-
   ```
   表1参数描述 
   | 参数         | 描述         |
   |:---|:---|
   | select 1   | 执行的sql语句。  |
   | user       | 连接集群的用户名。  |
   | *password* | 创集群时创建的密码。 |
   | IP         | ELB IP地址。  |
      
   
 
