Backup and restore LXD บน ubuntu 18.04 server

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 9-11-2561
ดูแลโดย WIBOON


ขั้นตอน backup
1. สร้าง backup host เป็น ubuntu 18.04 server

2. ตั้งค่า Fixed IP

sudo nano /etc/netplan/01-netcfg.yaml

ใส่ข้อมูลให้ตรงกับ network interface ที่ใช้ เช่น enp0s3 เป็นต้น

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses: [ 10.0.100.252/24 ]
      gateway4: 10.0.100.1
      nameservers:
          addresses:
              - 10.0.100.1

ทำคำสั่งตั้งค่า network ใหม่

sudo netplan apply


3. เปิดใช้งาน LXD และเปิด port 8443 ด้วย password คือ blah เพื่อให้เก็บ container ที่จะ backup ไว้

sudo lxd init
lxc config set core.https_address [::]:8443
lxc config set core.trust_password blah

NOTE: เมื่อ backup เสร็จ เราจะปิด port ด้วยคำสั่งนี้
lxc config unset core.https_address

4. กลับมาทำคำสั่งที่ running host
เพิ่มรายการ remote site ที่จะเป็น backup host ตั้งชื่อว่า tblog.backup

lxc remote add tblog.backup 10.0.100.252

ผลลัพธ์

Certificate fingerprint: b46f35d98be8fb1b844b5c03f71ed740893017b74005c5f2013810a57a93dc4f
ok (y/n)? y
Admin password for tblog.backup: blah
Client certificate stored at server:  tblog.backup

NOTE: ตรวจสอบรายการด้วยคำสั่ง
lxc remote list

5. ทำการ backup LXD container ชื่อ tblog1 ไปไว้ที่ remote site tblog.backup:

lxc stop tblog1; lxc copy tblog1 tblog.backup:tblog1 ; lxc start tblog1

และหากมี container ชื่อ tblog2 ด้วย ก็ทำแบบเดียวกัน

lxc stop tblog2; lxc copy tblog2 tblog.backup:tblog2 ; lxc start tblog2

ขั้นตอน restore
หากเราจะนำ container ที่ backup ไว้ กลับมาใช้ในเครื่องเดิม
1. ทำคำสั่งที่ running host เพื่อเปิด port 8443 ให้ backup host ส่ง container ที่ backup ไว้นั้นมาได้

lxc config set core.https_address [::]:8443
lxc config set core.trust_password blah


2. ให้ stop container

lxc stop tblog1
lxc stop tblog2


3. ให้เปลี่ยนชื่อ

lxc move tblog1 sblog1
lxc move tblog2 sblog2


4. ที่ backup host
เราจะส่ง container ที่ backup ไว้นั้นไปยัง running host ตัวอย่างตั้งค่า remote site ชื่อ tblog.running ดังนี้

lxc remote add tblog.running 10.0.100.251
lxc remote list


5. ตรวจสอบรายชื่อ container ว่ามีสถานะ STOPPED อยู่
lxc list

6. ทำการ copy ส่งไปยัง running host

lxc copy tblog1 tblog.current:tblog1
lxc copy tblog2 tblog.current:tblog2

ขั้นตอนเปิดบริการ

lxc start tblog1
lxc start tblog2

ตรวจสอบดูว่าได้ IP เลขเดิมหรือไม่ (หากไม่ได้เลขเดิมเราก็ต้องปรับแก้เล็กน้อย)
lxc list

ทดสอบเข้าเว็บไซต์ด้วยเบราว์เซอร์
กรณีที่ทำเปลี่ยน WP_SITEURL
http://tblog1.example.com
http://tblog2.example.com
กรณีไม่เปลี่ยน WP_SITEURL
http://tblog1.example.com/wordpress
http://tblog2.example.com/wordpress

วิธีการแก้ไขให้ได้เลข IP ตามต้องการ
สำหรับ container ชื่อ tblog1 ต้องการให้ได้ IP 10.25.51.155

lxc stop tblog1
lxc network attach lxdbr0 tblog1 eth0 eth0
lxc config device set tblog1 eth0 ipv4.address 10.25.51.155
lxc start tblog1

สำหรับ container ชื่อ tblog2 ต้องการให้ได้ IP 10.25.51.245

lxc stop tblog2
lxc network attach lxdbr0 tblog2 eth0 eth0
lxc config device set tblog2 eth0 ipv4.address 10.25.51.245
lxc start tblog2