Lesson 1 - Cài đặt Pgpool-II trên Ubuntu 22.04

24/02/2024 - 6 phút

Follow  on Google News

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.

Kiến trúc cài đặt

Trước khi bắt đầu ta cần chuẩn bị 4 máy chủ

IPHostnamevCPURAMDISKOS
192.168.50.10pgpool22 core4G60GUbuntu 22.04
192.168.50.11pg-master2 core4G60GUbuntu 22.04
192.168.50.12pg-slave-012 core4G60GUbuntu 22.04
192.168.50.13pg-slave-022 core4G60GUbuntu 22.04

Cài đặt PostgreSQL Replication

Cài đặt PostgreSQL 16 Replication trên 3 máy chủ pg-masterpg-slave-01, pg-slave-02.

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ọnMô tảMặc định
--prefixĐường dẫn cài đặt PGpool-II/usr/local
--with-pgsqlThư mục cài đặt thư viện máy khách PostgreSQLCung cấp bởi pg_config
--with-opensslHỗ trợ OpenSSL (mã hóa mật khẩu AES256)Tắt
--enable-sequence-lockKhóa hàng trong bảng tuần tự (tương thích PGpool-II 3.0)Tắt
--enable-table-lockKhóa bảng mục tiêu chèn (tương thích PGpool-II 2.2 & 2.3)Tắt
--with-memcached=pathSử dụng memcached cho bộ đệm truy vấn bộ nhớKhông sử dụng
--with-pamHỗ trợ xác thực PAMTắ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ình pgpool.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 nhanh
    • smart : 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.