本文介绍如何在您的笔记本或PC机上基于Vagrant与Virtualbox一键拉起Pigsty演示沙箱。
如果您已经有可以用于部署的机器实例,可以参考部署教程将Pigsty部署至真实环境中。
太长;不看
如果您的本地计算机上已经安装有vagrant , virtualbox与ansible,那么只需要克隆并进入本项目后,依次执行以下命令即可:
# 事前准备
make up # 拉起vagrant虚拟机
make ssh # 配置虚拟机ssh访问
sudo make dns # 写入Pigsty静态DNS域名(需要sudo,可选)
#【可选】 使用离线安装模式
make fetch # 下载最新的离线软件包
make upload # 将离线软件包上传至元节点
# 执行初始化
make init # 初始化Pigsty
make mon-view # 打开Pigsty首页(默认用户密码:admin:admin)
正常情况下执行结果详见 参考-标准流程。
如果您已经完成过一次初始化,想要重建新的环境,执行:make new
即可。
如果您希望了解详情,知晓每条命令背后完成的工作,请往下阅读。
配置要求
标准的Pigsty演示沙箱包含4个虚拟机节点,其中一个元节点,与三个数据库节点。通过Vagrant进行供给。 元节点用于管理整个系统,部署有基础设施组件:包括DNS,NTP,DCS,监控系统组件等,因此通常要求更高的配置。
元节点默认为2核/4GB,数据库节点默认为1核/2GB。因此默认配置下宿主机至少应当有5核/10GB的配置。 如果您的机器配置不足,可以考虑减少节点数量,或降低节点的资源要求。最低配置仅包含单个元节点,资源要求为1核1GB。
默认的四节点虚拟机使用Vagrant语法定义:Vagrantfile。
您可以编辑项目目录下vagrant/Vagrantfile
文件以修改虚拟机配置,详细信息请参考:Vagrant供给。
最低配置
只使用单个元节点的配置,包括一个单主数据库集群pg-meta
与完整的监控系统。元节点最低配置为1核/1GB。
标准配置
使用四个节点组成的完整演示环境,其中包含一个元节点与三个普通数据库节点。元节点配置为2核/4GB,数据库节点为配置1核/2GB x3。环境中包含了一个单主数据库pg-meta
(位于元节点上),以及一个额外的名为pg-test
的一主两从测试集群,可充分展示集群监控、管理、流量切换等功能。
安装软件
在本机运行Pigsty沙箱之前,您需要在宿主机安装vagrant 与 virtualbox。如果希望在宿主机发起管理与控制,您还需要安装ansible。
软件的安装因平台而异,这里以MacOS为例,您可以直接从官方网站下载vagrant和virtualbox的安装器,并按向导提示完成安装。
ansible可以通过包管理器安装:
brew install ansible # macos
yum install ansible # linux
检查安装的软件版本:
$ echo $(vagrant --version)
Vagrant 2.2.13
$ echo $(vbox-img --version)
6.1.16r140961
$ echo $(ansible --version)
ansible 2.10.3
拉起环境
首先,克隆并进入项目目录,后续操作均位于项目根目录中(以/tmp/pigsty
为例)
cd /tmp && git clone https://github.com/Vonng/pigsty && cd pigsty
拉起虚拟机
执行make up
将调用vagrant up
命令,根据Vagrantfile中的定义,使用Virtualbox创建四台虚拟机。
$ make up
cd vagrant && vagrant up
Bringing machine 'meta' up with 'virtualbox' provider...
Bringing machine 'node-1' up with 'virtualbox' provider...
Bringing machine 'node-2' up with 'virtualbox' provider...
Bringing machine 'node-3' up with 'virtualbox' provider...
==> meta: Cloning VM...
==> meta: Matching MAC address for NAT networking...
==> meta: Setting the name of the VM: vagrant_meta_1609817410777_92884
==> meta: Clearing any previously set network interfaces...
==> meta: Preparing network interfaces based on configuration...
meta: Adapter 1: nat
meta: Adapter 2: hostonly
==> meta: Forwarding ports...
meta: 22 (guest) => 2222 (host) (adapter 1)
==> meta: Running 'pre-boot' VM customizations...
==> meta: Booting VM...
==> meta: Waiting for machine to boot. This may take a few minutes...
meta: SSH address: 127.0.0.1:2222
......
==> node-3: Running provisioner: shell...
node-3: Running: /var/folders/_5/_0mbf4292pl9y4xgy0kn2r1h0000gn/T/vagrant-shell20210105-17045-1rj8hxd.sh
node-3: [INFO] write ssh config to /home/vagrant/.ssh
配置SSH
新拉起的虚拟机默认用户为vagrant
,需要配置本机到虚拟机的免密ssh访问。
执行make ssh
命令将调用vagrant的ssh-config
命令,系统会将pigsty虚拟机节点的ssh配置文件写入~/.ssh/pigsty_config
。
该命令仅需在首次拉起Pigsty时执行。
$ make ssh
cd vagrant && vagrant ssh-config > ~/.ssh/pigsty_config 2>/dev/null; true
if ! grep --quiet "pigsty_config" ~/.ssh/config ; then (echo 'Include ~/.ssh/pigsty_config' && cat ~/.ssh/config) > ~/.ssh/config.tmp; mv ~/.ssh/config.tmp ~/.ssh/config && chmod 0600 ~/.ssh/config; fi
if ! grep --quiet "StrictHostKeyChecking=no" ~/.ssh/config ; then (echo 'StrictHostKeyChecking=no' && cat ~/.ssh/config) > ~/.ssh/config.tmp; mv ~/.ssh/config.tmp ~/.ssh/config && chmod 0600 ~/.ssh/config; fi
配置DNS
Pigsty包含若干Web页面子系统,需要通过域名区分访问。您可以通过修改/etc/hosts
中的静态解析记录做到这一点。make dns
会将Pigsty涉及的静态DNS记录写入宿主机的/etc/hosts
文件,以便您通过浏览器访问监控系统。
注意修改DNS需要sudo权限,您可能需要输入密码,该命令仅需在首次拉起Pigsty时执行。
$ sudo make dns
Password:
if ! grep --quiet "pigsty dns records" /etc/hosts ; then cat files/dns >> /etc/hosts; fi
默认会写入以下DNS域名记录:
# pigsty dns records
10.10.10.2 pg-meta # sandbox vip for pg-meta
10.10.10.3 pg-test # sandbox vip for pg-test
10.10.10.10 meta-1 # sandbox node meta-1 (node-0)
10.10.10.11 node-1 # sandbox node node-1
10.10.10.12 node-2 # sandbox node node-2
10.10.10.13 node-3 # sandbox node node-3
10.10.10.10 pigsty y.pigsty yum.pigsty
10.10.10.10 c.pigsty consul.pigsty
10.10.10.10 g.pigsty grafana.pigsty
10.10.10.10 p.pigsty prometheus.pigsty
10.10.10.10 a.pigsty alertmanager.pigsty
10.10.10.10 n.pigsty ntp.pigsty
10.10.10.10 h.pigsty haproxy.pigsty
离线安装包(可选)
Pigsty是一个复杂的软件系统,为了确保系统的稳定,Pigsty会在初始化过程中从互联网下载所有依赖的软件包并建立本地Yum源。
所有依赖的软件总大小约1GB左右,下载速度取决于您的网络情况。尽管Pigsty已经尽量使用镜像源以加速下载,但少量包的下载仍可能受到防火墙的阻挠,可能出现非常慢的情况。您可以通过proxy_env
配置项设置下载代理以完成首次下载,或直接下载预先打包好的离线安装包。例如最新的离线安装包地址为:
https://github.com/Vonng/pigsty/releases/download/v0.5.0/pkg.tgz
将该软件包拷贝至项目根目录的files/pkg.tgz
,然后执行make upload
,即可将离线软件包上传至元节点的目标位置。
make upload
为了快速拉起Pigsty,建议使用离线下载软件包并上传的方式完成安装。
默认的离线软件包基于CentOS 7.8,用于生产环境时,我们强烈建议您依据生产环境的实际情况完成一次完整的网络下载,并通过make cache
缓存离线安装包。
执行初始化
完成上述操作后,执行make init
即会调用ansible
完成Pigsty系统的初始化。
$ make init
./sandbox.yml # 快速初始化,并行初始化元节点与普通数据库节点
如果您已经将离线安装包上传至元节点,那么初始化环境会比较快,视机器配置可能总共需要5~10分钟不等。
如果离线安装包不存在,那么Pigsty会在初始化过程中从互联网下载约1GB数据,视网络条件可能需要20分钟或更久。
强烈建议您在第一次完成初始化后执行 make cache
命令,该命令会将下载好的软件打为离线缓存包,并放置于files/pkg.tgz
中。这样当下一次创建新的pigsty环境时,只要宿主机内操作系统一致,就可以直接复用该离线包,省去大量下载时间。
sandbox.yml
是专门为本地沙箱环境准备的初始化剧本,通过同时初始化元节点和数据库节点节省了一半时间。
生产环境建议使用meta.yml
与pgsql.yml
分别依次完成元节点与普通节点的初始化。
探索监控系统
初始化完毕后,您可以通过浏览器访问 http://pigsty 前往监控系统主页。默认的用户名与密码均为admin
如果您没有配置DNS,或者没有使用默认的IP地址,也可以直接访问 http://meta_ip_address:3000
前往监控系统首页。
同时,您也可以通过以下域名访问其他附属系统: