clickhouse SLB 服务搭建
生活随笔
收集整理的這篇文章主要介紹了
clickhouse SLB 服务搭建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- nginx安裝
- nginx配置
- 使用
- clickhouse-jdbc jar包
- application.yml文件配置
- spring boot 的config類
- 配置文件
前言
最近在使用flink消費kafka的數據同步到clickhouse,為了保證高可用,特此查了一下資料,網上大部分都是使用的BalancedClickhouseDataSource,但是這個包雖然可以做到一定程度的負載均衡,但是無法做到故障轉移。有興趣可以去看下BalancedClickhouseDataSource的源碼解析:https://blog.csdn.net/anyitian/article/details/117953600。官方論壇中推薦使用SLB來做負載均衡。下面就來記錄一下整個流程。
nginx安裝
windows搭建Nginx服務器及常見問題
linux下安裝nginx
nginx配置
在nginx的conf目錄中找到nginx.conf,打開配置clickhouse的地址和代理。整個配置如下:
worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream clickhouse{server 124.70.101.18:8123;server 124.70.22.201:8123;server 124.70.36.237:8123;server 121.36.18.102:8123;}server {listen 8123;server_name localhost;location / {client_max_body_size 200m;proxy_pass http://clickhouse;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}} }使用
clickhouse-jdbc jar包
<dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.2.4</version> </dependency>在代碼中我們只需要在創建連接的時候訪問server_name的地址和端口即可,nginx會自動幫我們做負載均衡。
下面附上springboot的使用方法,參考地址:https://www.jianshu.com/p/e7e26f8ddd8f
application.yml文件配置
clickhouse.test.address:jdbc:clickhouse://ip:8123 clickhouse.test.db:test clickhouse.test.socketTimeout:30000 clickhouse.test.username:** clickhouse.test.password:*** clickhouse.test.connection-timeout:2000 clickhouse.test.alive-test-interval:1 server.port=8181spring boot 的config類
@Configuration @MapperScan(basePackages = {"com.john.balanceclickhouse.demo"},sqlSessionFactoryRef ="dwstSqlSessionFactory" ) public class ClickhouseConfig {@Resourceprivate LocalProperties localProperties;@Bean(name = "dataSource")public DataSource clickHouseDataSource() {ClickHouseProperties properties = new ClickHouseProperties();properties.setDatabase(localProperties.getDb());properties.setUser(localProperties.getUsername());properties.setPassword(localProperties.getPassword());properties.setConnectionTimeout(localProperties.getConnectionTimeout());properties.setSocketTimeout(localProperties.getSocketTimeout());//clickhouse jdbc 包,可以用來做負載均衡;策略是隨機的,但是搭建SLB之后,就可以使用nginx 的負載均衡策略了BalancedClickhouseDataSource ckDataSource = new BalancedClickhouseDataSource(localProperties.getAddress(), properties);// 添加集群節點存活檢查return ckDataSource.scheduleActualization(localProperties.getAliveTestInterval(), TimeUnit.SECONDS);}@Bean(name = "configuration")public org.apache.ibatis.session.Configuration globalConfiguration() {org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true);return configuration;}@Bean(name = "SqlSessionFactory")public SqlSessionFactory clickHouseSqlSessionFactory(@Qualifier("dataSource") DataSource clickHouseDataSource, @Qualifier("configuration") org.apache.ibatis.session.Configuration configuration) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(clickHouseDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml"));sessionFactory.setTypeAliasesPackage("com.john.balanceclickhouse.demo");sessionFactory.setConfiguration(configuration);return sessionFactory.getObject();} }配置文件
@Data @Component @ConfigurationProperties(prefix = "clickhouse.test") public class LocalProperties {/*** 數據庫地址/private String address;/*** 連接數據庫*/private String db;/*** socket超時時間*/private Integer socketTimeout;/*** 用戶名*/private String username;/*** 密碼*/private String password;/*** 連接超時時間*/private Integer connectionTimeout;/*** 判斷存活實例時間間隔*/private Integer aliveTestInterval;}總結
以上是生活随笔為你收集整理的clickhouse SLB 服务搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【找出耗电大户进行消灭 电池持久有绝招】
- 下一篇: 我的世界服务器圈地系统,我的世界领地指令