บันทึก
กำลังมองหา serf.io? เว็บไซต์ SERF ถูกปิดในวันที่ 10/02/2024 เอกสารก่อนหน้านี้ที่ให้บริการจาก serf.io สามารถพบได้ที่ https://github.com/hashicorp/serf/blob/master/docs/index.html.markdown
SERF เป็นโซลูชันการกระจายอำนาจสำหรับการค้นพบบริการและการประสานที่มีน้ำหนักเบามีให้บริการสูงและทนต่อความผิดพลาด
SERF ทำงานบน Linux, Mac OS X และ Windows โปรโตคอลซุบซิบที่มีประสิทธิภาพและมีน้ำหนักเบาใช้ในการสื่อสารกับโหนดอื่น ๆ SERF สามารถตรวจจับความล้มเหลวของโหนดและแจ้งส่วนที่เหลือของคลัสเตอร์ ระบบเหตุการณ์ถูกสร้างขึ้นที่ด้านบนของ SERF ช่วยให้คุณใช้โปรโตคอลซุบซิบของ SERF เพื่อเผยแพร่เหตุการณ์เช่นการปรับใช้การเปลี่ยนแปลงการกำหนดค่า ฯลฯ SERF นั้นไม่มีหลักอย่างสมบูรณ์โดยไม่มีจุดล้มเหลวเพียงจุดเดียว
นี่คือตัวอย่างการใช้กรณีของ SERF แม้ว่าจะมีอีกมากมาย:
ก่อนอื่นให้ดาวน์โหลดไบนารี Serf ที่สร้างไว้ล่วงหน้าสำหรับระบบปฏิบัติการของคุณรวบรวม Serf ด้วยตัวคุณเองหรือติดตั้งโดยใช้ go get -u github.com/hashicorp/serf/cmd/serf
ต่อไปเรามาเริ่มตัวแทน SERF สองสามคน ตัวแทนทำงานจนกว่าพวกเขาจะได้รับคำสั่งให้เลิกและจัดการการสื่อสารของงานบำรุงรักษาของ SERF ในการตั้งค่า SERF จริงแต่ละโหนดในระบบของคุณจะเรียกใช้เอเจนต์ SERF หนึ่งตัวขึ้นไป (สามารถเรียกใช้เอเจนต์หลายตัวได้หากคุณใช้หลายประเภทคลัสเตอร์เช่นเว็บเซิร์ฟเวอร์กับเซิร์ฟเวอร์ Memcached)
เริ่มต้นเอเจนต์ SERF แต่ละตัวในเซสชันเทอร์มินัลแยกต่างหากเพื่อให้เราสามารถเห็นผลลัพธ์ของแต่ละรายการ เริ่มต้นตัวแทนแรก:
$ serf agent -node=foo -bind=127.0.0.1:5000 -rpc-addr=127.0.0.1:7373
...
เริ่มต้นเอเจนต์ที่สองในเซสชันเทอร์มินัลอื่น (ในขณะที่ครั้งแรกยังคงทำงานอยู่):
$ serf agent -node=bar -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7374
...
ณ จุดนี้ตัวแทนของ Serf สองคนกำลังทำงานอย่างอิสระ แต่ยังไม่ทราบซึ่งกันและกัน ตอนนี้บอกตัวแทนคนแรกให้เข้าร่วมคลัสเตอร์ที่มีอยู่ (ตัวแทนที่สอง) เมื่อเริ่มต้นเอเจนต์ SERF คุณต้องเข้าร่วมคลัสเตอร์ที่มีอยู่โดยระบุสมาชิกที่มีอยู่อย่างน้อยหนึ่งคน หลังจากนี้ซุบซิบ Serf และส่วนที่เหลือของคลัสเตอร์จะตระหนักถึงการเข้าร่วม เรียกใช้คำสั่งต่อไปนี้ในเซสชันเทอร์มินัลที่สาม
$ serf join 127.0.0.1:5001
...
หากคุณกำลังดูเทอร์มินัลของคุณคุณควรเห็นตัวแทน SERF ทั้งสองตระหนักถึงการเข้าร่วม คุณสามารถพิสูจน์ได้โดยเรียกใช้ serf members เพื่อดูสมาชิกของคลัสเตอร์ SERF:
$ serf members
foo 127.0.0.1:5000 alive
bar 127.0.0.1:5001 alive
...
ณ จุดนี้คุณสามารถ CTRL-C หรือบังคับให้ฆ่าตัวแทน SERF และพวกเขาจะอัปเดตรายการสมาชิกของพวกเขาอย่างเหมาะสม หากคุณเป็นตัวแทน SERF CTRL-C มันจะออกไปอย่างสง่างามโดยแจ้งให้ทราบถึงความตั้งใจที่จะออก หากคุณบังคับให้ฆ่าเอเจนต์ในที่สุดมันจะตรวจพบ (โดยปกติภายในไม่กี่วินาที) โดยสมาชิกคนอื่นของคลัสเตอร์ซึ่งจะแจ้งให้ทราบถึงคลัสเตอร์ของความล้มเหลวของโหนด
เอกสารเต็มรูปแบบที่ครอบคลุมสามารถดูได้บนเว็บไซต์ SERF:
https://github.com/hashicorp/serf/tree/master/docs
หากคุณต้องการทำงานกับ SERF คุณจะต้องติดตั้งก่อน ( จำเป็นต้องใช้ เวอร์ชัน 1.10+) ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งอย่างถูกต้องรวมถึงการตั้งค่า Gopath ของคุณ
ถัดไปโคลนที่เก็บนี้เป็น $GOPATH/src/github.com/hashicorp/serf จากนั้นเพียงพิมพ์ make ในอีกไม่กี่นาทีคุณจะมีการทำงาน serf ที่ใช้งานได้:
$ make
...
$ bin/serf
...
หมายเหตุ: make จะวางสำเนาของปฏิบัติการภายใต้ $GOPATH/bin/
SERF เป็นไลบรารีแรกและสำคัญที่สุดที่มีอินเทอร์เฟซบรรทัดคำสั่ง serf ไลบรารี SERF นั้นเป็นอิสระจากตัวแทนบรรทัดคำสั่ง serf serf Binary ตั้งอยู่ภายใต้ cmd/serf และสามารถติดตั้งแบบสแตนด์อโลนได้โดยการออกคำสั่ง go get -u github.com/hashicorp/serf/cmd/serf แอปพลิเคชันที่ใช้ห้องสมุด SERF ควรต้องรวม github.com/hashicorp/serf เท่านั้น
การทดสอบสามารถเรียกใช้ได้โดยการพิมพ์ make test
หากคุณทำการเปลี่ยนแปลงรหัสใด ๆ ให้เรียกใช้รูป make format เพื่อจัดรูปแบบรหัสโดยอัตโนมัติตามมาตรฐาน GO