Lesson 1 - Cài đặt Pgpool-II trên Ubuntu 22.04
24/02/2024 - 5 phút
Pgpool-II là gì
PGpool-II là một giải pháp trung gian độc đáo, được thiết kế đặc biệt để tối ưu hóa và mở rộng khả năng của hệ quản trị cơ sở dữ liệu PostgreSQL. Nó mang lại nhiều lợi ích như việc tối ưu hóa kết nối, phân phối tải đều và thực hiện sao chép dữ liệu, biến PGpool-II thành công cụ không thể thiếu trong quản lý các triển khai PostgreSQL. Trong hướng dẫn chi tiết này, chúng ta sẽ đi qua các bước để cài đặt và cấu hình PGpool-II trên hệ điều hành Ubuntu Linux, giúp bạn khai thác tối đa hiệu suất và tính sẵn sàng cao của cơ sở dữ liệu của mình.
Trước khi bắt đầu ta cần chuẩn bị 4 máy chủ
IP | Hostname | vCPU | RAM | DISK | OS |
---|---|---|---|---|---|
192.168.50.10 | pgpool-ii | 2 core | 4G | 60G | Ubuntu 22.04 |
192.168.50.11 | pg-master | 2 core | 4G | 60G | Ubuntu 22.04 |
192.168.50.12 | pg-slave-01 | 2 core | 4G | 60G | Ubuntu 22.04 |
192.168.50.13 | pg-slave-02 | 2 core | 4G | 60G | Ubuntu 22.04 |
Kiến trúc cài đặt
Cài đặt PGpool-II 4.5.0
Bước 1: Cài đặt PGpool-II 4.5.0
Cài đặt make và gcc
*** Cần có GNU tạo phiên bản 3.80 hoặc mới hơn; các chương trình tạo khác hoặc các phiên bản tạo GNU cũ hơn sẽ không hoạt động. (GNU make đôi khi được cài đặt dưới tên gmake.) Để kiểm tra GNU, hãy nhập:
sudo apt update
sudo apt install -y make gcc libpq-dev
sau khi cài đặt kiểm tra phiên bản của make
make --version
Phiên bản make
hiện tại đang là 4.3
gcc --version
Phiên bản gcc
hiện tại đang là 11.4.0
Tải gói cài đặt PGpool-II
wget https://www.pgpool.net/mediawiki/download.php?f=pgpool-II-4.5.0.tar.gz -O pgpool-II-4.5.0.tar.gz
Giải nén và cài đặt
# giải nén
tar -xvf pgpool-II-4.5.0.tar.gz
cd pgpool-II-4.5.0
Tiếp tục ta cài đặt memcached và libmemcached-dev và libpq-dev
sudo apt install -y libmemcached-dev libpq-dev
Sau đó, chúng ta sẽ cấu hình và cài đặt PGpool-II bằng cách thực hiện các bước sau:
./configure --prefix=/home/pgpool2 --with-memcached=/usr/sbin/memcached
make && sudo make install
Bạn có thể tùy chỉnh quá trình xây dựng và cài đặt bằng cách cung cấp một hoặc nhiều tùy chọn dòng lệnh sau để định cấu hình:
Tùy chọn | Mô tả | Mặc định |
---|---|---|
--prefix | Đường dẫn cài đặt PGpool-II | /usr/local |
--with-pgsql | Thư mục cài đặt thư viện máy khách PostgreSQL | Cung cấp bởi pg_config |
--with-openssl | Hỗ trợ OpenSSL (mã hóa mật khẩu AES256) | Tắt |
--enable-sequence-lock | Khóa hàng trong bảng tuần tự (tương thích PGpool-II 3.0) | Tắt |
--enable-table-lock | Khóa bảng mục tiêu chèn (tương thích PGpool-II 2.2 & 2.3) | Tắt |
--with-memcached=path | Sử dụng memcached cho bộ đệm truy vấn bộ nhớ | Không sử dụng |
--with-pam | Hỗ trợ xác thực PAM | Tắt |
Sau khi cấu hình xong, chúng ta tiền hành tạo ln -la để tạo liên kết đến thư /usr/sbin
sudo ln -s /home/pgpool2/bin/* /usr/sbin
Tiếp tục kiểm tra phiên bản của pgpool
sau khi cài đặt thành công bằng lệnh sau:
pgpool --version
Bước 2: Cấu hình PGpool-II
Tạo thư mục cấu hình cho PGpool-II:
sudo mkdir /etc/pgpool2
Sao chép từ config mẫu :
sudo cp /home/pgpool2/etc/pgpool.conf.sample /etc/pgpool2/pgpool.conf
sudo cp /home/pgpool2/etc/pool_hba.conf.sample /etc/pgpool2/pool_hba.conf
sudo cp /home/pgpool2/etc/pcp.conf.sample /etc/pgpool2/pcp.conf
Bước 3: Cấu hình quản lý kết nối
Tiếp theo, chúng ta sẽ cấu hình quản lý kết nối bằng cách chỉnh sửa tệp cấu hình /etc/pgpool2/pool_hba.conf
:
sudo nano /etc/pgpool2/pool_hba.conf
Thêm cấu hình sau vào tệp:
host all all 0.0.0.0/0 trust
Bước 4: Khởi chạy PGpool-II
Tạo thư mục chứa file pid:
sudo mkdir /var/run/pgpool
Cuối cùng, khởi chạy lại dịch vụ PGpool-II để áp dụng các thay đổi:
sudo /usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf -F /etc/pgpool2/pcp.conf
Bước 5: Cấu hình pcp.conf
**Pgpool-II cung cấp một giao diện để người quản trị thực hiện các thao tác quản lý, chẳng hạn như xem trạng thái Pgpool-II hoặc tắt các tiến trình Pgpool-II từ xa. pcp.conf
là tệp chứa người dùng/mật khẩu được sử dụng để xác thực cho giao diện này. Tất cả các chế độ hoạt động đều yêu cầu cài đặt tệp pcp.conf
.
Tạo tệp pcp.conf
:
password_hash=$(pg_md5 Ehi@123)
echo "pgpool:$password_hash" >> /etc/pgpool2/pcp.conf
Trong đó akitect@123
là mật khẩu của tài khoản pgpool
, bạn có thể thay đổi mật khẩu theo ý muốn.
Sau đó, thêm quyền truy cập vào tệp pcp.conf
:
sudo chown pgpool:pgpool /etc/pgpool2/pcp.conf
sudo chmod 0600 /etc/pgpool2/pcp.conf
Bước 6: Tạo Service PGpool-II
Giống như bất kỳ tiến trình máy chủ (server daemon) nào có thể truy cập từ bên ngoài, bạn nên chạy Pgpool-II bằng một tài khoản người dùng riêng biệt. Tài khoản người dùng này chỉ nên sở hữu dữ liệu được quản lý bởi máy chủ và không được dùng chung với tiến trình khác. (Ví dụ, sử dụng tài khoảng ’nobody’ là không tốt.) Cũng không nên cài đặt các tệp thực thi thuộc sở hữu của người dùng này bởi vì nếu hệ thống bị xâm phạm, kẻ tấn công có thể sửa đổi các tệp nhị phân đó.
Để thêm tài khoản người dùng Unix vào hệ thống, hãy tìm lệnh useradd
hoặc adduser
. Tên người dùng pgpool thường được sử dụng, và nó được mặc định sử dụng trong tài liệu, nhưng bạn có thể dùng tên khác nếu thích.
Tạo người dùng pgpool
:
sudo useradd -s /bin/bash -m -d /home/pgpool -c "pgpool user" pgpool
Set quyền cho người dùng pgpool
:
sudo chown -R pgpool:pgpool /etc/pgpool2
sudo chown -R pgpool:pgpool /var/run/pgpool
Tạo một tệp systemd service pgpool2.service
trên máy chủ pgpool2
:
sudo nano /etc/systemd/system/pgpool2.service
Thêm nội dung sau vào tệp pgpool2.service
:
Description=pgpool-II
Documentation=man:pgpool(8)
Wants=postgresql.service
After=network.target
[Service]
User=pgpool
ExecStart=/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf -F /etc/pgpool2/pcp.conf -m smart
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
StandardOutput=syslog
SyslogFacility=local0
[Install]
WantedBy=multi-user.target
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf -F /etc/pgpool2/pcp.conf -m smart
trong đó :
-n
: Không chạy dưới dạng daemon-f
: Đường dẫn đến tệp cấu hìnhpgpool.conf
-F
: Đường dẫn đến tệp cấu hình quản lýpcp.conf
-m
: Chế độ hoạt động của Pgpool-II. Có 3 chế độ hoạt động:fast
: Chế độ hoạt động nhanhsmart
: Chế độ hoạt động thông minh, mặc định
Tự động bật khi khởi động hệ thống:
sudo systemctl enable pgpool2
Khởi động lại dịch vụ PGpool-II:
sudo systemctl start pgpool2
Như vậy, chúng ta đã cài đặt và cấu hình PGpool-II trên hệ điều hành Ubuntu Linux
. Bằng cách thực hiện các bước này, bạn có thể tối ưu hóa và mở rộng khả năng của cơ sở dữ liệu PostgreSQL
, giúp bạn khai thác tối đa hiệu suất và tính sẵn sàng cao của cơ sở dữ liệu của mình.