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 เริ่มทำงานมาตั้งแต่เมื่อไหร่ยังไง ถ้าขึ้นมาก็เสร็จแล้วครับ
ข้ามไปยัง
- ติดตั้ง Bacula บน centos 5/6/7
- ตั้งค่า Bacula Director
- ตั้งค่า Bacula Storage
- ตั้งค่า Bacula Client
- ตั้งค่าการ Backup ของ Client
- การดูสถานะ backup และการสั่ง Restore
Tags: bacula, configuration
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 ไหน) มีอะไรเปลี่ยนแปลงบ้าง