您的位置:首页 > 运维架构 > Docker

Docker实现keepalived + TimescaleDB 的高可用(三)

2020-01-13 16:13 323 查看

linux实现keepalived + TimescaleDB 的高可用

  • 4.修改check_timescale_port脚本权限
  • 5.可视化界面
  • 6.修改TimescaleDB密码
  • 7.测试
  • TimescaleDB是什么?

    官网网址
    TimescaleDB数据库是基于PostgreSQL数据库扩展的一个时序性数据库插件。可以使用标准sql语句。

    1.使用docker-compose生成容器

    docker、docker-compose介绍和常用命令

    进入

    /root
    目录,创建文件,文件名
    docker-compose.yml
    .文件内容:

    version: "2.1"
    services:
    timescaledb:
    image: timescale/timescaledb:1.3.0-pg11
    restart: unless-stopped
    ports:
    - "5432:5432"
    volumes:
    - /data/docker/timescaledb/data:/var/lib/postgresql/data

    然后进入该目录下,

    cd ~
    ,运行命令
    docker-compose up
    ,即可生成容器。
    可以看出来,你把docker-compose.yml文件创建在哪里,就进入该目录运行up命令即可。

    2.创建check_timescale_port脚本文件

    进入

    /etc/keepalived
    目录,创建名为
    check_timescale_port.sh
    的文件。

    #!/bin/bash
    count=`nmap -p 5432 127.0.0.1|grep open|wc -l`
    if [ $count != 0 ]
    then
    exit 0
    else
    exit 1
    fi

    照例,仅是端口号不同,TimescaleDB和PostgreSQL的端口号相同,都为

    5432
    .

    3.配置keepalived.conf文件

    (1)引入脚本

    vrrp_script chk_http4_port {
    script "/etc/keepalived/check_timescale_port.sh"
    interval 1
    weight -20
    }

    (2)创建vrrp模块

    vrrp_instance VI_4 {
    state MASTER
    interface eth0
    virtual_router_id 54
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
    192.168.50.225/24
    }
    track_script {
    chk_http4_port
    }
    priority 100  ##主服务100 备服务90只要小于100就可以
    }

    (3)完整的keepalived.conf文件

    vrrp_script chk_http1_port {
    script "/etc/keepalived/check_redis_port.sh"
    interval 1
    weight -20
    }
    vrrp_script chk_http2_port {
    script "/etc/keepalived/check_tomcat_port.sh"
    interval 1
    weight -20
    }
    vrrp_script chk_http3_port {
    script "/etc/keepalived/check_rabbitmq_port.sh"
    interval 1
    weight -20
    }
    vrrp_script chk_http4_port {
    script "/etc/keepalived/check_timescale_port.sh"
    interval 1
    weight -20
    }vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
    192.168.50.222/24
    }
    track_script {
    chk_http1_port
    }
    priority 100  ##主服务100 备服务90只要小于100就可以
    }
    vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    advert_int 1
    authentication {
    auth_type PA
    auth_pass 123
    }
    virtual_ipaddress {
    192.168.50.223/24
    }
    track_script {
    chk_http2_port
    }
    priority 100  ##主服务100 备服务90只要小于100就可以
    }
    vrrp_instance VI_3 {
    state MASTER
    interface eth0
    virtual_router_id 53
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
    192.168.50.224/24
    }
    track_script {
    chk_http3_port
    }
    priority 100  ##主服务100 备服务90只要小于100就可以
    }
    vrrp_instance VI_4 {
    state MASTER
    interface eth0
    virtual_router_id 54
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
    192.168.50.225/24
    }
    track_script {
    chk_http4_port
    }
    priority 100  ##主服务100 备服务90只要小于100就可以
    }
    

    惯例:主机的priority属性为100,备机为90.

    4.修改check_timescale_port脚本权限

    进入当前目录:

    /etc/keepalived
    ,使用命令:
    chmod 777 check_timescale_port.sh
    ,修改完毕。
    使用
    ls -l
    命令查看文件权限。

    5.可视化界面

    后记:好吧,我的试用版过期了,不得不找个破解版,推荐下载最新版本,目前是12版本。
    下载地址:Navicat 12 破解版下载/破解方式(亲测有效),我也是亲测有效。】
    timescale可视化界面选择

    Navicat
    ,去官网下载最新版本即可,我是选择的
    Navicat for PostgreSQL

    连接linux的数据库,如图所示:

    填写了连接名,主机ip后,密码这栏却不知道怎么填了,接下来就得修改TimescaleDB的密码。

    6.修改TimescaleDB密码

    我们是使用的docker安装的数据库,所有得进入docker容器中修改密码。

    (1)进入docker容器:

    docker exec -it 容器id /bin/sh

    (2)切换至postgres用户:

    su postgres

    (3)执行 psql ,进入 postgres的命令行

    psql

    (4)在psql 命令行 修改默认用户密码

    ALTER USER postgres WITH PASSWORD '123456';

    现在,我就将我的数据库密码修改为了123456.

    (5)退出容器

    exit

    至此,我们就可以正常连接数据库了。
    如果你在连接数据库时,报异常:

    ERROR:column “proisagg” dose not exist…


    这是因为你的Navicat版本太低的原因,重新下载新版本即可。

    7.测试

    分别启动主备机的keepalived,分别启动主备机的timescaleDB,在主和备数据库中插入不同的数据,看虚拟ip连接的数据库显示哪个表的数据,正常情况显示主机数据。
    停止掉主机的timescaleDB,刷新虚拟ip数据库,查看数据是否切换到了备机的表数据,如果切换,配置正确。

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    昨夜冻成狗 发布了12 篇原创文章 · 获赞 10 · 访问量 1327 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: