2015-03-28 22 views
5

Tôi mới vào sở thú và aws EC2. Tôi đang cố gắng cài đặt zookeeper trên 3 trường hợp ec2.cài đặt zookeeper trên nhiều AWS EC2instances

theo zookeeper document, tôi đã cài đặt Zookeeper trên tất cả 3 trường hợp, tạo zoo.conf và thêm vào dưới đây cấu hình:

tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/opt/zookeeper/data 
clientPort=2181 
server.1=localhost:2888:3888 
server.2=<public ip of ec2 instance 2>:2889:3889 
server.3=<public ip of ec2 instance 3>:2890:3890 

cũng Tôi đã tạo ra tập tin myid trên tất cả 3 trường hợp như /opt/zookeeper/data/myid theo hướng dẫn. .

tôi có vài thắc mắc như sau:

  1. bất cứ khi nào tôi bắt đầu Zookeeper serv trên mỗi trường hợp, nó sẽ bắt đầu ở chế độ độc lập. (theo nhật ký)

  2. cấu hình trên có thể thực sự kết nối với nhau không? cổng 2889: 3889 & 2890: 38900 - tất cả những cổng này. Tôi có thể cần phải cấu hình nó trên máy ec2 hoặc tôi cần phải cung cấp cho một số cổng khác chống lại nó?

  3. Tôi có cần tạo nhóm bảo mật để mở các kết nối này không? Tôi không chắc chắn làm thế nào để làm điều đó trong trường hợp ec2.

  4. Làm cách nào để xác nhận tất cả 3 người sở thú đã bắt đầu và họ có thể liên lạc với nhau?

Trả lời

10

Cấu hình ZooKeeper được thiết kế để bạn có thể cài đặt cùng một tệp cấu hình trên tất cả các máy chủ trong cụm mà không sửa đổi. Điều này làm cho các ops đơn giản hơn một chút. Thành phần chỉ định cấu hình cho nút cục bộ là tệp myid.

Cấu hình bạn đã xác định là không cấu hình có thể được chia sẻ trên tất cả các máy chủ. Tất cả các máy chủ trong danh sách máy chủ của bạn phải ràng buộc với một địa chỉ IP riêng có thể truy cập được đến các nút khác trong mạng. Bạn đang thấy máy chủ của mình bắt đầu ở chế độ độc lập vì bạn đang ràng buộc với localhost. Vì vậy, vấn đề là các máy chủ khác trong cụm không thể thấy localhost.

cấu hình của bạn sẽ giống như hơn:

tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/opt/zookeeper/data 
clientPort=2181 
server.1=<private ip of ec2 instance 1>:2888:3888 
server.2=<private ip of ec2 instance 2>:2888:3888 
server.3=<private ip of ec2 instance 3>:2888:3888 

Hai cổng liệt kê trong mỗi định nghĩa máy chủ lần lượt là các đại biểu và cử cổng được sử dụng bởi các nút Zookeeper để giao tiếp với nhau trong nội bộ. Thường không cần phải sửa đổi các cổng này, và bạn nên cố gắng giữ chúng giống nhau trên các máy chủ để thống nhất.

Ngoài ra, như tôi đã nói, bạn sẽ có thể chia sẻ cùng một tệp cấu hình chính xác trên tất cả các phiên bản. Điều duy nhất cần phải thay đổi là tệp tin myid.

Có thể bạn sẽ cần phải tạo một nhóm bảo mật và mở cổng khách hàng để sẵn sàng cho khách hàng và các cổng đại biểu/bầu cử có thể truy cập được bởi các máy chủ ZooKeeper khác.

Cuối cùng, bạn có thể muốn xem giao diện người dùng để giúp quản lý cụm.Netflix makes a decent UI sẽ cung cấp cho bạn chế độ xem cụm của bạn và cũng giúp dọn dẹp nhật ký cũ và lưu ảnh chụp nhanh lên S3 (ZooKeeper chụp nhanh nhưng không xóa nhật ký giao dịch cũ, vì vậy đĩa của bạn cuối cùng sẽ lấp đầy nếu chúng không được xóa đúng cách) . Nhưng một khi nó được cấu hình chính xác, bạn sẽ có thể thấy các máy chủ ZooKeeper kết nối với nhau trong các bản ghi là tốt.

EDIT

@czerasz lưu ý rằng bắt đầu từ phiên bản 3.4.0 bạn có thể sử dụng autopurge.snapRetainCountautopurge.purgeInterval chỉ để giữ cho bức ảnh chụp của bạn sạch sẽ.

@chomp lưu ý rằng một số người dùng phải sử dụng 0.0.0.0 để IP máy chủ cục bộ nhận cấu hình ZooKeeper hoạt động trên EC2. Nói cách khác, thay thế <private ip of ec2 instance 1> bằng 0.0.0.0 trong tệp cấu hình trên instance 1. Điều này trái ngược với cách các tệp cấu hình ZooKeeper được thiết kế nhưng có thể cần thiết trên EC2.

+1

Bắt đầu từ phiên bản '3.4.0', bạn có thể sử dụng chỉ thị 'autopurge.snapRetainCount' và' autopurge.purgeInterval' để giữ cho ảnh chụp nhanh của bạn sạch sẽ. – czerasz

+0

Thay vì đặt IP riêng của máy, trong tệp zoo.cfg của cá thể 1 (ví dụ), nó phải là "0.0.0.0". – chomp

+0

@chomp là bạn đang nói nếu đây là tệp cấu hình cho 'server.1' bạn có thể đặt' 0.0.0.0' cho mục nhập cụ thể đó trong tệp? Các tệp cấu hình ZooKeeper được thiết kế sao cho chúng có thể được nhân bản trên các máy mà không bị chỉnh sửa, đó là lý do tại sao tệp 'myid' là riêng biệt. Chúng tôi không thể đặt '0.0.0.0' làm IP của tất cả các máy chủ vì bạn không thể tham chiếu đến máy chủ từ xa theo cách đó. Do đó, tệp cấu hình phải có IP thực. – kuujo