快速安装
1. 部署的架构
CLup程序分两个模块:
- clup-server: 通常需要一台单独的机器安装此模块,此管理模块提供WEB界面以及其他的管理功能,高可用功能也是由此模块完成。clup-server从这台机器上去探测各个数据库是否正常,如果不正常,会执行相应的高可用切换动作。要求这台机器可以访问所有的数据库主机。
- clup-agent: 每台数据库主机上都需要安装此模块,clup-server模块是通过向每台数据库主机上的clup-agent程序发送命令来完成对每台机器上的数据库的控制。
部署的架构图:
开源版暂时仅支持el7和el8系统。
2. 机器的规划
部署CLup我们使用4台虚拟机,操作系统使用CentOS7.6,其中一台机器部署clup-server,其它3台机器上跑数据库并安装部署clup-agent程序。
主机名 | IP | 作用 | 数据目录 |
---|---|---|---|
clup0 | 10.197.166.35 | 部署clup-server | N/A |
clup1 | 10.197.166.36 | 数据库机器,部署clup-agent | /data/pgdata |
clup2 | 10.197.166.37 | 数据库机器,部署clup-agent | /data/pgdata |
clup3 | 10.197.166.38 | 数据库机器,部署clup-agent | /data/pgdata |
注意:对于企业版未注册时会有CPU的核数限制(Agent端合计20核心,开源版无此限制),可以选择使用2核心虚拟机9台或者4核心虚拟机5台,这样就不会超过试用版的CPU核数限制。如果测试需要更多核心、解锁更多功能,可以电话0571-87603386,申请一个试用的license。
3. 安装clup-server
3.1 企业版的安装方法
我们使用一键安装脚本进行安装。如果想了解更详细的安装方法,请阅读后续章节《 安装详解 》 中的内容。
目前一键安装脚本仅支持el7和el8系统,clup0主机上运行下面脚本即可一键安装
wget -qO /tmp/clup.sh https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup install
然后我们在浏览器输入 http://10.197.166.35:8090 ,打开WEB界面:
- 默认的用户名为:admin
- 默认密码为:cstech
输入后就可以登陆CLup的管理界面了。WEB界面中可以管理的数据库当前都是空的,还需要在数据库主机中安装clup-agent后,才能进一步的操作。
3.2 开源版的安装方法
3.2.1 安装Python
CLup要求python3.9及以上的版本。由于在CentOS7.X下面,没有python3.9,我们已经编译好了python3.9的版本供大家下载:
# 下载软件包,需要放到/opt目录下
cd /opt
wget https://gitee.com/csudata/csupy3.9.16/releases/download/1.0/csupy3.9.16.el7.tar.xz
# 解压软件包
tar xf csupy3.9.16.el7.tar.xz
# 添加lib包的路径到环境变量
echo "export LD_LIBRARY_PATH=/opt/csupy3.9.16/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc
# 添加bin路径到PATH环境变量
echo "export PATH=/opt/csupy3.9.16/bin:\$PATH" >> ~/.bashrc
# 加载环境
source ~/.bashrc
如果是使用自己的Python3.9的环境,需要安装的python依赖包如下:
echo "certifi==2022.12.7
cffi==1.15.1
charset-normalizer==3.1.0
click==5.1
cryptography==40.0.2
idna==3.4
isort==5.12.0
lxml==4.9.1
ordered-set==4.1.0
packaging==23.1
psutil==5.9.4
psycopg2-binary==2.8.6
pyasn1==0.4.8
pycparser==2.21
pycrypto==2.6.1
pycryptodome==3.19.0
pyspnego==0.8.0
pystack-debugger==0.10.0
PyYAML==6.0
requests==2.28.2
requests-ntlm==1.2.0
rsa==4.9
six==1.16.0
tabulate==0.8.10
urllib3==1.26.15
xmltodict==0.13.0
zstandard==0.21.0" > requirements.txt
建议使用国内的pip源,下载会比较快点,这里给出配置阿里的pip源的示例:
建文件“~/.pip/pip.conf”(如果目录.pip不存在需要创建),添加如下内容:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
快速安装依赖包:
# 注意先加载自己的Python环境
pip3 install -r requirements.txt
如果安装pycrypto时报错,请先安装编译环境依赖
yum install -y gcc-c++ cmake
,或参照相关的python文档。
3.2.2 server端安装csumdb
CLup自身的数据也是保存在一个PostgreSQL数据库的,这个库我们称之为csumdb。可以在Server端安装一套PostgreSQL数据库。如果是企业版本的CLup,前面的一键安装脚本会自动安装好一个我们内置的csumdb数据库。
这里我们使用yum源安装。
1.安装PostgreSQL的repo源
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2.安装epel源,这里使用阿里的镜像站
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.安装PostgreSQL数据库,这里安装的版本是PostgreSQL12
yum -y install postgresql12.x86_64 postgresql12-contrib.x86_64 postgresql12-libs.x86_64 postgresql12-server.x86_64
4.创建系统用户
groupadd -g 571 csumdb
useradd -u 571 -g 571 -d /home/csumdb -m -s /bin/bash csumdb
5.配置用户环境变量
su - csumdb
vi .bashrc
# .bashrc
# ====== Add by csumdb init env **do not modify** begin
export PATH=/usr/pgsql-12/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-12/lib:$LD_LIBRARY_PATH
export PGDATA=~/pgdata
export PGHOST=127.0.0.1
export PGPORT=5432
export PGDATABASE=openclup
export PGUSER=csuapp
# ====== Add by csumdb init env **do not modify** end
# 加载环境变量
source ~/.bashrc
6.配置数据库用户密码
echo "127.0.0.1:5432:openclup:csuapp:openclup" > .pgpass && chmod 600 ~/.pgpass
3.2.3 数据库初始化
1.初始化一个数据库实例
initdb
2.修改用户认证配置文件pgdata/pg_hba.conf
echo "
local all all peer
host all all 0/0 md5
local replication all peer
host replication all 0/0 md5
" >> ~/pgdata/pg_hba.conf
3.修改数据库配置文件pgdata/postgresql.conf
echo "
listen_addresses = '*'
port = 5432
logging_collector = on
log_filename = 'postgresql-%a.log' # log file name pattern,
log_truncate_on_rotation = on
log_timezone = 'PRC'
track_io_timing = on
track_functions = all
datestyle = 'iso, mdy'
timezone = 'PRC'
unix_socket_directories = '.'
lc_messages = 'en_US.UTF-8' # locale for system error message
lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
lc_numeric = 'en_US.UTF-8' # locale for number formatting
lc_time = 'en_US.UTF-8' # locale for time formatting
" >> ~/pgdata/postgresql.conf
4.启动cusmdb
pg_ctl start -D ~/pgdata
5.启动csumdb后进入template1
数据库
psql -d template1 -Ucsumdb
6.修改数据库属性
CREATE USER csuapp password 'openclup';
CREATE DATABASE openclup owner csuapp;
ALTER ROLE csuapp LOGIN;
7.配置用户权限
\c openclup
REVOKE CREATE ON SCHEMA public FROM public;
ALTER SCHEMA public OWNER TO csuapp;
3.2.4 部署OpenCLup源码
1.安装依赖项
yum install -y tcl tcl-devel tk
2.下载源码(需要将源码放到/opt目录下),克隆仓库:
# root
cd /opt
git clone https://gitee.com/csudata/clup.git
3.设置配置文件:
cd /opt/clup/conf
mv example_clup.conf clup.conf
4.修改配置文件clup.conf
,注意替换对应字段的值:
#格式为 key = value
# ++++++++++++++++++++++++++++++++ 网络 ++++++++++++++++++++++++++++++++
# 网络地址(即IP地址与掩码做and位运算后的值),本cluster软件将运行在此网络中,如果主机有多个IP地址,则使用这个网络内的IP地址做为通信的IP
network=10.197.160.0
# 设置用于检查是否是自己变成了孤岛的检查IP,可以为逗号分隔的多个ip,如果这些IP能ping通,说明不是自己不是孤岛,注意最多设置三个IP,多余的被忽略
probe_island_ip=10.197.160.4
# ++++++++++++++++++++++++++++++++ RPC连接 ++++++++++++++++++++++++++++++++
#agent与服务器之间通信的密码
internal_rpc_pass = clup_pass_pwd
# 如果是集群模式,要求所有的CLup的server_rpc_port都相等
server_rpc_port = 4242
agent_rpc_port = 4243
# ++++++++++++++++++++++++++++++++ WEB页面 ++++++++++++++++++++++++++++++++
# 当把http_auth设置为0时,用admin用户登录,输入任何密码都可以登录,当忘记密码时的就可以使用解决方法
http_auth = 1
# 前端管理界面web监听端口
http_port = 8080
http_user = admin
http_pass = openclup
# ++++++++++++++++++++++++++++++++ clup数据库连接 ++++++++++++++++++++++++++++++++
# 数据库连接配置
db_host = 127.0.0.1
db_port = 5432
db_user = csuapp
db_pass = openclup
db_name = openclup
# 当配置了强制reset机器的命令时,执行完此命令之后,是否检查命令的返回值,如果设置为1,则不管命令执行成功还是失败,都认为成功继续进行HA切换。
# 如果设置为0,则如果reset命令执行失败,则HA切换失败
ignore_reset_cmd_return_code = 0
# psql_cmd的路径:
psql_cmd=/usr/pgsql-12/bin/psql
5.启动服务,这里使用的是中启乘数编译好的Python3.9的环境:
# 加载环境
[root@clup0 opt]# source /opt/csu_pyenv/bin/activate
# 启动服务
(csu_pyenv) [root@clup0 opt]# python /opt/clup/lib/clup_server.py start
INFO:root:========== CLup starting ==========
2023-10-09 14:58:02,195 INFO ========== CLup starting ==========
# 停止服务: python /opt/clup/lib/clup_server.py stop
6.然后我们在浏览器输入 http://10.197.166.35:8080 ,打开WEB界面:
- 用户名为:admin
- 密码为:openclup
输入后就可以登陆CLup的管理界面了。WEB界面中可以管理的数据库当前都是空的,还需要在数据库主机中部署clup-agent后,才能进一步的操作。
如果服务无法正常启动,请查看日志
/opt/clup/logs/clupserver.log
获取错误信息。
4. 安装clup-agent
4.1 企业版的安装方法
在需要部署数据库的主机上安装clup-agent。在本示例是在10.197.166.36、10.197.166.37、10.197.166.38机器上安装clup-agent。
使用以下命令一键安装clup-agent,目前仅支持el7和el8系统。
wget -qO /tmp/clup.sh https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup-agent install
输入clup服务端的IP地址10.197.166.35
然后回车继续:
Enter Clup Server IP Addr: 10.197.166.35
Clup Server ip is 10.197.166.35!
==== register systemd service ...
2022-10-08 11:11:47,287 INFO clup-agent v4.4.8 Copyright (c) 2018-2022 CSUDATA.COM All rights reserved.
already register systemd service!
==== register systemd service ok.
==== Installation is complete.
4.2 开源版的安装方法
在需要部署数据库的主机上安装clup-agent。在本示例是在10.197.166.36、10.197.166.37、10.197.166.38机器上部署clup-agent。
1.安装依赖项:
yum install -y psmisc.x86_64 tcl tcl-devel tk
2.下载clup-agent源码,克隆仓库:
cd /opt
git clone https://gitee.com/csudata/clup-agent.git
3.设置配置文件:
cd /opt/clup-agent/conf
mv example-clup-agent.conf clup-agent.conf
4.修改配置文件clup-agent.conf
:
# key = value
# If the machine has multiple IPs, it is necessary to specify which network's IP address to use
mgr_network = 10.197.160.0
#Specify the address of the CLup server,CLup serve端的IP和端口,替换IP即可
server_address = 10.197.166.35:4242
# agent与服务器之间通信的密码,保持默认即可
internal_rpc_pass = clup_pass_pwd
# Under normal circumstances, the clup agent can only be started after the CLup server is started.
# But sometimes we need to start the clup-agent separately when the CLup server is not started,
# and in this case, we can set standalone to 1
# standalone = 0
# rpc 端口,保持默认即可
agent_rpc_port = 4243
5.启动服务,注意需要先安装好Python3.9的环境,参照3.2.1 安装Python:
# 加载环境
[root@clup1 ~]# source /opt/csu_pyenv/bin/activate
# 启动服务
(csu_pyenv) [root@clup1 ~]# python /opt/clup-agent/lib/clup_agent.py start
2023-10-09 15:08:08,046 INFO Clup-Agent v5.0.0 Copyright (c) 2019 HangZhou CSTech.Ltd. All rights reserved.
# 停止服务: python /opt/clup/lib/clup_agent.py stop
5. 安装PostgreSQL数据库
可以使用PostgreSQL官方提供的方法安装PostgreSQL。但这里为了方便大家快速的入门,这里提供了一个快速安装的PostgreSQL数据库的方法,下载安装包:
wget https://gitee.com/csudata/csupg/releases/download/csupg_el7/csupg-14.9.el7.x86_64.bin
安装:
bash csupg-14.9.el7.x86_64.bin
# 数据库软件的目录会生成在/usr下
上面给出的示例是el7下的PostgreSQL14.9的版本,我们还提供了PG10~PG14的版本和el8的版本,请移步此处查看下载:csupg 发行版 - Gitee.com