Archive for September, 2014

0189 | ตั้งค่า Bacula Director ครั้งแรก

Monday, September 15th, 2014 Posted in Linux | No Comments »

ต่อจากการติดตั้ง bacula ใน entry ที่แล้ว นะครับ งานนี้เริ่มเข้ากระบวนการตั้งค่า bacula director ที่เป็นตัวควบคุมทุกอย่างกัน

การติดตั้ง bacula ผ่าน repository ดังกล่าวจะจัดไฟล์ config ทั้งหมดไว้ที่ /etc/bacula/ ครับ สำหรับ director จะอยู่ในไฟล์ /etc/bacula/bacula-dir.conf

*** ไฟล์มันมีข้อมูลอยู่แล้ว แนะนำให้เปลี่ยนชื่อเป็นอย่างอื่นแล้วสร้างไฟล์ใหม่เปล่าๆ ขึ้นมาดีกว่าครับ หรือไม่ก็ลองอ่านดูก็ได้ว่าข้างในมีอะไรบ้าง

โครงสร้างของไฟล์ backup จะแบ่งเป็น section คล้ายๆ condition ของการเขียนโปรแกรมครับ ประมาณนี้

Director {
  Name = bacula-dir # director instance name
  DIRport = 9101
  QueryFile = "/etc/bacula/query.sql"
  WorkingDirectory = "/var/spool/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 8 
  Password = "bacula" # Console password
  Messages = Daemon # messages name
}

ส่วนแรกสุดที่ต้อง config ครับ คือ Director เป็นการประกาศตัวเองว่าชื่ออะไรยังไง จุดที่สำคัญอยู่ตรง Name ครับ ตั้งอะไรไว้ก็ mark ให้ดีๆ เพราะต้องเอาไปใส่ config ของ Storage และ Client อีก

Password อันนี้สำหรับให้ console เข้ามาเชื่อมต่อครับ แล้วสำหรับ Messages จะระบุถึงการเก็บ log + แจ้งเตือนต่างๆ ครับ ซึ่งจะมีประกาศในส่วนต่อไป ดังนี้

Messages {
  Name = Daemon 
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = youremail@example.com = all, !skipped
  console = all, !skipped, !saved
  append = "/var/log/bacula/bacula.log" = all, !skipped
}

อันนี้ก็จะตั้งค่าว่ากรณี daemon ทำงานแล้วมีข้อความอะไรออกมาก็ตามให้ทำอะไรบ้าง ซึ่งในรายการก็จะมี ส่งอีเมล ไปหาเมล youremail@example.com (แก้เป็นเมลที่จะใช้รับการแจ้งเตือนได้เลย) ซึ่งจะส่งเวลาเจอปัญหา รันงานไม่ผ่านอะไรพวกนี้ และยังมีเขียน log ลงไฟล์กับแจ้งเตือนผ่าน console ด้วยครับ

Messages {
  Name = Standard
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = youremail@example.com = all, !skipped
  operator = youremail@example.com = mount
  console = all, !skipped, !saved
  append = "/var/log/bacula/bacula.log" = all, !skipped
  catalog = all
}

ส่วน Message Name = Standard อันนี้จะเอาไว้รับ log ที่มาจาก storage หรือ client ครับ ตั้งค่าคล้ายๆ กัน แก้อีเมลตามสะดวกครับ

เชื่อมต่อฐานข้อมูล

Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbaddress = "localhost"; dbuser = "bacula"; dbpassword = "databasepassword"
}

อันนี้ก็ตรงไปตรงมาครับ แก้ไขค่าต่างๆ ให้ตรงกับที่ไปสร้างฐานข้อมูลไว้ตาม entry ที่แล้ว แล้วเดี๋ยว bacula จะไปอ่านเขียนข้อมูลเอาเอง

เชื่อมต่อ Bacula Storage

Storage {
  Name = bacula-sd # storage name
  Address = "192.0.2.1" # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "bacula-dir-sd" # storage password
  Device = FileStorage # storage device
  Media Type = File
  Maximum Concurrent Jobs = 8
}

จุดสำคัญของส่วนนี้มีอยู่สามอันครับ คือ Name , Password และ Device ซึ่งจะต้องตั้งค่าให้ตรงกับที่จะไปตั้งค่า Storage (เดี๋ยวจะเขียนอธิบายแยกเรื่องการตั้งค่า Bacula storage อีก entry นึงครับ)

ส่วนหลักๆ ของ director มีเท่านี้ครับ ซึ่งมันไม่ใช่ส่วนสำคัญเลย (ฮา) เพราะที่วุ่นวายคือการประกาศการ backup ครับ ที่ต้องไปคุยกับ client ว่าจะให้ backup อะไรยังไงบ้างนี่แหละ วุ่นเอาเรื่อง


ตั้งค่า Bacula Console เชื่อมกับ Director

แถมนิดเดียว ตอนนี้แนะนำให้เปิดไฟล์ /etc/bacula/bconsole.conf ขึ้นมาครับ มันคือไฟล์ตั้งค่าของคำสั่ง bconsole ที่จะไว้ดูสถานะ + สั่ง bacula ให้ทำโน่นนี่นั่น

Director {
  Name = bacula-dir # director
  DIRport = 9101
  address = localhost
  Password = "bacula" 
}

หลักๆ ก็แค่ตั้ง Name กับ Password ให้ตรงกับ section Director ด้านบนครับ แล้วก็ชี้ address ให้ถูกเครื่องด้วย แค่นี้แหละครับ จบแล้ว

ตั้งค่าเสร็จสั่ง service bacula-dir start แล้วทดสอบด้วยคำสั่ง bconsole มันควรจะขึ้นสถานะประมาณนี้ครับ

Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.2.13 (19 February 2013)
Enter a period to cancel a command.
*

ถึงจุดนี้ลองพิมพ์ status director ดู มันควรจะบอกว่า director เริ่มทำงานมาตั้งแต่เมื่อไหร่ยังไง ถ้าขึ้นมาก็เสร็จแล้วครับ


ข้ามไปยัง

Tags: ,

0188 | Bacula : ระบบ backup ข้อมูลสุดเมพ… รึเปล่าวะ?

Saturday, September 13th, 2014 Posted in Linux | No Comments »

วันก่อน… (ช่วงปลายเดือนที่แล้ว) รื้อระบบ backup server ใหม่ขนานใหญ่ครับ ตัดสินใจเอา bacula มาลงหลังจากทำใจอยู่นาน …. สาเหตุไม่ใช่อะไร config ยากมาก… มันโยงกันอีรุงตุงนังมากจนขี้เกียจจะหัด แต่ก็ต้องใช้อะนะครับ เพราะมันเมพขริงๆ

ก่อนอื่นอธิบายก่อน Bacula คือระบบ backup ข้อมูล “ผ่าน network” แบบ open source ซึ่งแบ่งการทำงานออกเป็น 3 ส่วนใหญ่ๆ ดังนี้

  • Director: เป็นตัวควบคุมหลักของ bacula เลย การตั้งค่าแทบทุกอย่างจะอยู่ตรงนี้
  • Storage: ไว้เก็บข้อมูลครับ สามารถมีหลายๆ เครื่องได้ แล้วก็ตั้งค่าแยกให้แต่ละ client ไปเก็บแยกกันแต่ละ storage อีกที
  • Client: อันนี้เอาไว้ลงที่ server ที่จะ backup ข้อมูลครับ

โดยหลักการของ bacula มันคือการทำอะไรคล้ายๆ กับ rsync ครับ แต่มีลูกเล่นมากกว่าตรงที่ข้อมูลใหม่จะไม่เขียนทับข้อมูลเก่า กรณีไฟล์เปลี่ยนแปลงก็สามารถตรวจเจอได้ทั้งหมด และเลือกย้อนไปวันไหนก็ได้เท่าที่มีการ backup ไว้โดยไม่มีการ backup ซ้ำถ้าไฟล์ไม่เปลี่ยนแปลง ซึ่งการ backup นี้จะมีทั้งหมด 3 แบบครับ

  • Full: ตรงตัวครับ เก็บใหม่ทุกอย่างไม่สนว่าเคยมีอะไรแล้วบ้าง
  • Differential: นับจากการรันแบบ Full ครั้งล่าสุด มาจนถึงตอนที่รัน backup ว่ามีอะไรเปลี่ยนแปลงบ้าง
  • Incremental: นับจากการ backup ครั้งสุดท้าย (ไม่ว่า mode ไหน) มีอะไรเปลี่ยนแปลงบ้าง

Read the rest of this entry »

Tags: , ,