上手

基于vagrant,快速在本机拉起演示系统

本文介绍如何在您的笔记本或PC机上基于Vagrant与Virtualbox一键拉起Pigsty演示沙箱

如果您已经有可以用于部署的机器实例,可以参考部署教程将Pigsty部署至真实环境中。

太长;不看

如果您的本地计算机上已经安装有vagrantvirtualboxansible,那么只需要克隆并进入本项目后,依次执行以下命令即可:

# 事前准备
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沙箱之前,您需要在宿主机安装vagrantvirtualbox。如果希望在宿主机发起管理与控制,您还需要安装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.ymlpgsql.yml分别依次完成元节点与普通节点的初始化。

探索监控系统

初始化完毕后,您可以通过浏览器访问 http://pigsty 前往监控系统主页。默认的用户名与密码均为admin

如果您没有配置DNS,或者没有使用默认的IP地址,也可以直接访问 http://meta_ip_address:3000前往监控系统首页。

同时,您也可以通过以下域名访问其他附属系统:

接下来做什么?


最后修改 2021-02-03: update doc (1c9da3b)