Apache Storm là công nghệ dữ liệu lớn cho phép các kỹ sư phần mềm, dữ liệu và cơ sở hạ tầng xử lý dữ liệu tốc độ cao, khối lượng lớn theo thời gian thực và trích xuất thông tin hữu ích. Bất kỳ dự án nào liên quan đến việc xử lý luồng dữ liệu tốc độ cao theo thời gian thực đều có thể hưởng lợi từ công nghệ này.

Zookeeper là công nghệ hệ thống phân tán quan trọng mà Storm phụ thuộc vào để hoạt động chính xác.

Dữ liệu lớn trong Linode Cloud: Xử lý dữ liệu phát trực tuyến với Apache Storm

Một số trường hợp sử dụng mà Storm là giải pháp tốt:

  • Phân tích dữ liệu Twitter (ví dụ: dự đoán xu hướng hoặc phân tích tình cảm)
  • Phân tích thị trường chứng khoán
  • Phân tích nhật ký máy chủ
  • Xử lý dữ liệu cảm biến Internet vạn vật (IoT)

Hướng dẫn này giải thích cách tạo cụm Storm trên đám mây Linode bằng một tập lệnh shell sử dụng Giao diện lập trình ứng dụng (API) của Linode để tạo và cấu hình các cụm lớn theo chương trình. Tất cả các tập lệnh đều được tác giả của hướng dẫn này cung cấp thông qua kho lưu trữ GitHub . Ngăn xếp ứng dụng này cũng có thể được hưởng lợi từ dung lượng đĩa lớn, vì vậy hãy cân nhắc sử dụng dịch vụ Lưu trữ khối của chúng tôi với thiết lập này.

Quan trọng: Tài nguyên bên ngoài nằm ngoài tầm kiểm soát của chúng tôi và có thể bị thay đổi và/hoặc sửa đổi mà chúng tôi không biết. Luôn tự mình xem lại mã từ các trang web của bên thứ ba trước khi thực hiện.

Kiến trúc được triển khai sẽ trông như thế này:

Kiến trúc của cụm hoàn thiện

Về mặt ứng dụng, luồng dữ liệu được mô tả như sau:

Cấu trúc và triển khai của bão

Luồng ứng dụng bắt đầu, từ phía máy khách, với máy khách Storm, cung cấp giao diện người dùng. Giao diện này liên hệ với một nút Nimbus , là nút trung tâm cho hoạt động của cụm Storm. Nút Nimbus lấy trạng thái hiện tại của cụm, bao gồm danh sách các nút giám sát và cấu trúc từ cụm Zookeeper. Các nút giám sát của cụm Storm liên tục cập nhật trạng thái của chúng tới các nút Zookeeper, đảm bảo rằng hệ thống vẫn được đồng bộ hóa.

Phương pháp mà Storm xử lý và xử lý dữ liệu được gọi là topology . Topology là một mạng lưới các thành phần thực hiện các hoạt động riêng lẻ và được tạo thành từ spout , là nguồn dữ liệu và bolt , chấp nhận dữ liệu đến và thực hiện các hoạt động như chạy hàm hoặc chuyển đổi. Bản thân dữ liệu, được gọi là luồng trong thuật ngữ Storm, có dạng các chuỗi tuple không giới hạn.

Hướng dẫn này sẽ giải thích cách cấu hình cụm Storm đang hoạt động và các nút Zookeeper của cụm đó, nhưng sẽ không cung cấp thông tin về cách phát triển các cấu trúc tùy chỉnh để xử lý dữ liệu. Để biết thêm thông tin về cách tạo và triển khai các cấu trúc Storm, hãy xem hướng dẫn Apache Storm .

Trước khi bạn bắt đầu

Yêu cầu hệ điều hành

  • Bài viết này giả định rằng máy trạm được sử dụng để thiết lập ban đầu cho trình quản lý cụm Linode đang chạy Ubuntu 14.04 LTS hoặc Debian 8. Đây có thể là máy tính cục bộ của bạn hoặc một Linode khác hoạt động như máy trạm từ xa của bạn. Các bản phân phối và hệ điều hành khác chưa được thử nghiệm.
  • Sau khi thiết lập ban đầu, bất kỳ máy trạm nào có hỗ trợ SSH đều có thể được sử dụng để đăng nhập vào trình quản lý cụm Linode hoặc các nút cụm.
  • Trình quản lý cụm Linode có thể cài đặt Ubuntu 14.04 LTS hoặc Debian 8.
  • Một cụm Zookeeper hoặc Storm có thể cài đặt Ubuntu 14.04 LTS hoặc Debian 8 trên các nút của nó. Bản phân phối của nó không cần phải giống với bản phân phối được cài đặt trên trình quản lý cụm Linode

Ghi chú: Các bước trong hướng dẫn này và trong các tập lệnh bash được tham chiếu yêu cầu quyền root. Hãy đảm bảo chạy các bước bên dưới dưới dạng root. Để biết thêm thông tin về quyền, hãy xem hướng dẫn Người dùng và Nhóm của chúng tôi .

Quy ước đặt tên

Trong suốt hướng dẫn này, chúng tôi sẽ sử dụng các tên sau đây làm ví dụ để chỉ các hình ảnh và cụm mà chúng tôi sẽ tạo:

  • zk-image1– Hình ảnh người trông coi sở thú
  • zk-cluster1– Cụm người trông coi sở thú
  • storm-image1– Hình ảnh cơn bão
  • storm-cluster1– Cụm bão

Đây là những tên chúng tôi sẽ sử dụng, nhưng bạn có thể tự chọn khi tạo hình ảnh và cụm của riêng mình. Hướng dẫn này sẽ sử dụng những tên này trong tất cả các lệnh ví dụ, vì vậy hãy đảm bảo thay thế tên của riêng bạn khi có thể.

Nhận Khóa API Linode

Thực hiện theo các bước trong Tạo khóa API và lưu khóa của bạn một cách an toàn. Khóa này sẽ được nhập vào tệp cấu hình trong các bước tiếp theo.

Nếu khóa hết hạn hoặc bị xóa, hãy nhớ tạo khóa mới và cập nhật api_env_linode.conftệp cấu hình môi trường API trên trình quản lý cụm Linode. Điều này sẽ được giải thích thêm trong phần tiếp theo.

Thiết lập Trình quản lý cụm

Bước đầu tiên là thiết lập một Cluster Manager trung tâm để lưu trữ thông tin chi tiết của tất cả các cụm Storm và cho phép người dùng được ủy quyền tạo, quản lý hoặc truy cập các cụm đó. Đây có thể là một máy trạm cục bộ hoặc Linode, nhưng trong hướng dẫn này sẽ là Linode.

1.Các tập lệnh được sử dụng trong hướng dẫn này giao tiếp với API của Linode bằng Python. Trên máy trạm của bạn, hãy cài đặt Git, Python 2.7 và curl:

sudo apt-get install python2.7 curl git

2.Tải xuống kho lưu trữ git của dự án:

git clone "https://github.com/pathbreak/storm-linode"
cd storm-linode
git checkout $(git describe $(git rev-list --tags='release*' --max-count=1))

3.Làm cho shell và tập lệnh Python có thể thực thi được:

chmod +x *.sh *.py

4.Tạo một bản sao hoạt động của tệp cấu hình môi trường API:

cp api_env_example.conf api_env_linode.conf

5.Mở api_env_linode.conftrong trình soạn thảo văn bản và thiết lập LINODE_KEYkhóa API đã tạo trước đó (xem phần Nhận khóa API Linode ).

export LINODE_KEY=fnxaZ5HMsaImTTRO8SBtg48...

6.Mở ~/storm-linode/cluster_manager.shtrong trình soạn thảo văn bản và thay đổi các thiết lập cấu hình sau để tùy chỉnh vị trí và cách tạo Cluster Manager Linode:

  • ROOT_PASSWORD: Đây sẽ là mật khẩu của người dùng root trên Cluster Manager Linode và được yêu cầu để tạo nút. Đặt mật khẩu này thành mật khẩu an toàn theo lựa chọn của bạn. Linode yêu cầu mật khẩu root phải chứa ít nhất 2 trong 4 loại ký tự sau:
    • ký tự chữ thường
    • ký tự chữ in hoa
    • ký tự số
    • ký tự tượng trưng
    Nếu có khoảng trắng trong mật khẩu, hãy đảm bảo toàn bộ mật khẩu được đặt trong dấu ngoặc kép ( "). Nếu có dấu ngoặc kép, ký tự đô la hoặc dấu gạch chéo ngược trong mật khẩu, hãy thoát mỗi dấu ngoặc kép, ký tự đô la hoặc dấu gạch chéo ngược bằng dấu gạch chéo ngược ( ) \.
  • PLAN_ID: Giá trị mặc định của 1tạo Cluster Manager Linode thành một nút 2GB, gói nhỏ nhất. Điều này thường là đủ. Tuy nhiên, nếu bạn muốn một Linode mạnh hơn, hãy sử dụng các lệnh sau để xem danh sách tất cả các gói khả dụng và ID của chúng:
source ~/storm-linode/api_env_linode.conf
 ~/storm-linode/linode_api.py plans

Ghi chú: Bạn chỉ cần chạy source tệp này một lần trong một phiên thiết bị đầu cuối duy nhất, trừ khi bạn thực hiện thay đổi đối với tệp đó.

DATACENTER: Điều này chỉ định trung tâm dữ liệu Linode nơi Cluster Manager Linode được tạo. Đặt nó thành ID của trung tâm dữ liệu gần nhất với vị trí của bạn, để giảm độ trễ mạng. Cũng nên tạo nút quản lý cụm trong cùng một trung tâm dữ liệu nơi các hình ảnh và nút cụm sẽ được tạo, để nó có thể giao tiếp với chúng bằng các địa chỉ IP riêng có độ trễ thấp và giảm mức sử dụng truyền dữ liệu.

Để xem danh sách các trung tâm dữ liệu và ID của chúng:

source ~/storm-linode/api_env_linode.conf
 ~/storm-linode/linode_api.py datacenters table

DISTRIBUTION: Đây là ID của bản phân phối để cài đặt trên Cluster Manager Linode. Hướng dẫn này chỉ được thử nghiệm trên Ubuntu 14.04 hoặc Debian 8; các bản phân phối khác không được hỗ trợ.

Giá trị mặc định của 124chọn Ubuntu 14.04 LTS 64-bit. Nếu bạn muốn sử dụng Debian 8 thay thế, hãy thay đổi giá trị này thành 140.

Ghi chú: Các giá trị được thể hiện trong hướng dẫn này là giá trị hiện tại tính đến thời điểm xuất bản, nhưng có thể thay đổi trong tương lai. Bạn có thể chạy ~/storm-linode/linode_api.py distributionsđể xem danh sách tất cả các bản phân phối khả dụng và giá trị của chúng trong API.

  • KERNEL: Đây là ID của hạt nhân Linux để cài đặt trên Cluster Manager Linode. Giá trị mặc định của 138chọn hạt nhân Linux 64-bit mới nhất có sẵn từ Linode. Không nên thay đổi cài đặt này.
  • DISABLE_SSH_PASSWORD_AUTHENTICATION: Điều này vô hiệu hóa xác thực mật khẩu SSH và chỉ cho phép xác thực SSH dựa trên khóa cho Cluster Manager Linode. Xác thực mật khẩu được coi là kém an toàn hơn và do đó bị vô hiệu hóa theo mặc định. Để bật xác thực mật khẩu, bạn có thể thay đổi giá trị này thành no.

Ghi chú: Các tùy chọn hiển thị trong phần này được tạo bởi linode_api.pytập lệnh và hơi khác so với các tùy chọn hiển thị khi sử dụng công cụ Linode CLI. Không sử dụng công cụ Linode CLI để cấu hình Manager Node của bạn.

Khi bạn hoàn tất việc thực hiện thay đổi, hãy lưu và đóng trình chỉnh sửa.

7.Bây giờ, hãy tạo và thiết lập Cluster Manager Linode:

./cluster_manager.sh create-linode api_env_linode.conf

Sau khi nút được tạo, bạn sẽ thấy kết quả như thế này:

Lưu ý địa chỉ IP công khai của Cluster Manager Linode. Bạn sẽ cần địa chỉ này khi đăng nhập vào trình quản lý cụm để tạo hoặc quản lý cụm.

8.Tập cluster_manager.shlệnh chúng tôi chạy ở bước trước sẽ tạo ba người dùng trên Cluster Manager Linode và tạo cặp khóa xác thực cho tất cả những người dùng này trên máy trạm của bạn, như minh họa trong hình này:

Tổng quan về bảo mật
  • ~/.ssh/clustermgrrootlà khóa riêng cho người dùng root của Cluster Manager Linode . Quyền truy cập vào thông tin đăng nhập của người dùng này phải được hạn chế tối đa có thể.
  • ~/.ssh/clustermgrlà khóa riêng cho người dùng clustermgr của Cluster Manager Linode . Đây là người dùng quản trị có đặc quyền có thể tạo và quản lý các cụm Storm hoặc Zookeeper. Quyền truy cập vào thông tin xác thực của người dùng này phải được hạn chế tối đa có thể.
  • ~/.ssh/clustermgrguestlà khóa riêng cho người dùng clustermgrguest của Cluster Manager Linode . Đây là người dùng không có đặc quyền để bất kỳ ai cần thông tin về cụm Storm sử dụng, nhưng không có khả năng quản lý chúng. Đây thường là các nhà phát triển, những người cần biết địa chỉ IP của nút máy khách của cụm để gửi cấu trúc liên kết đến cụm đó.

Xác thực mật khẩu SSH tới trình quản lý cụm bị vô hiệu hóa theo mặc định. Bạn nên để nguyên cài đặt mặc định . Tuy nhiên, nếu bạn muốn bật xác thực mật khẩu chỉ cho người dùng clustermgrguest để thuận tiện, hãy đăng nhập vào trình quản lý cụm mới tạo dưới dạng rootvà thêm dòng sau vào cuối/etc/ssh/sshd_config :

Match User clustermgrguest
  PasswordAuthentication yes

Khởi động lại dịch vụ SSH để kích hoạt thay đổi này:

service ssh restart

Quan trọng: Vì quyền truy cập vào trình quản lý cụm cung cấp quyền truy cập vào tất cả các cụm Storm và Zookeeper cũng như mọi dữ liệu nhạy cảm mà chúng đang xử lý nên cấu hình bảo mật của nó phải được coi là quan trọng và quyền truy cập phải hạn chế nhất có thể.

9.Đăng nhập vào trình quản lý cụm Linode với tư cách là rootngười dùng, sử dụng địa chỉ IP công khai được hiển thị khi bạn tạo:

ssh -i ~/.ssh/clustermgrroot root@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE

10.Đổi tên máy chủ thành tên nào đó mô tả rõ hơn. Ở đây, chúng tôi đổi thành clustermgr , nhưng bạn có thể thay thế bằng tên khác nếu muốn:

sed -i -r "s/127.0.1.1.*$/127.0.1.1\tclustermgr/" /etc/hosts
echo clustermgr > /etc/hostname
hostname clustermgr

11.Đặt mật khẩu cho người dùng clustermgr và clustermgrguest :

passwd clustermgr
passwd clustermgrguest

Bất kỳ quản trị viên nào đăng nhập với tư cách là người dùng clustermgr đều phải biết mật khẩu này vì họ sẽ được yêu cầu nhập mật khẩu khi thực hiện lệnh đặc quyền.

12.Xóa cluster_manager.shkhỏi thư mục người dùng root và đóng phiên SSH:

rm cluster_manager.sh
exit

13.Đăng nhập lại vào Cluster Manager Linode – lần này với tư cách là người dùng clustermgr – bằng địa chỉ IP công khai và khóa riêng cho người dùng clustermgr :

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE

14.Điều hướng đến storm-linodethư mục của bạn và tạo một bản sao làm việc của api_env_example.conf. Trong ví dụ này, chúng tôi sẽ gọi nó là api_env_linode.conf:

cd storm-linode 

cp api_env_example.conf api_env_linode.conf

15.Mở file mới tạo api_env_linode.conftrong trình soạn thảo văn bản và thiết lập LINODE_KEYkhóa API của bạn.Đặt CLUSTER_MANAGER_NODE_PASSWORDthành mật khẩu bạn đã đặt cho người dùng clustermgr ở Bước 11.

export LINODE_KEY=fnxaZ5HMsaImTTRO8SBtg48…

export CLUSTER_MANAGER_NODE_PASSWORD=changeme

Lưu thay đổi và đóng trình soạn thảo.

16.Trình quản lý cụm Linode hiện đã sẵn sàng để tạo cụm Apache Storm. Thêm khóa công khai của bất kỳ ai sẽ quản lý cụm vào /home/clustermgr/.ssh/authorized_keys, để họ có thể kết nối qua SSH với Trình quản lý cụm Linode với tư cách là người dùng clustermgr.

Tạo một cụm bão

Việc tạo một cụm Storm mới bao gồm bốn bước chính, một số bước chỉ cần thiết vào lần đầu tiên và có thể bỏ qua khi tạo các cụm tiếp theo.

Tạo hình ảnh người trông coi sở thú

Ảnh Zookeeper là ảnh đĩa chính có cài đặt tất cả phần mềm và thư viện Zookeeper cần thiết. Chúng tôi sẽ tạo ảnh bằng Linode Images. Lợi ích của việc sử dụng ảnh Zookeeper bao gồm:

  • Tạo nhanh một cụm Zookeeper bằng cách chỉ cần sao chép nó để tạo ra nhiều nút tùy theo yêu cầu, mỗi nút là một bản sao hoàn hảo của hình ảnh
  • Các gói phân phối và các gói phần mềm của bên thứ ba giống hệt nhau trên tất cả các nút, ngăn ngừa lỗi không khớp phiên bản
  • Giảm mức sử dụng mạng vì việc tải xuống và cập nhật chỉ được thực hiện một lần khi chuẩn bị hình ảnh thay vì lặp lại chúng trên mỗi nút

Ghi chú: Nếu hình ảnh Zookeeper đã tồn tại, bước này không bắt buộc. Nhiều cụm Zookeeper có thể chia sẻ cùng một hình ảnh Zookeeper. Trên thực tế, bạn nên giữ số lượng hình ảnh ở mức thấp vì dung lượng lưu trữ hình ảnh bị giới hạn ở mức 10GB.Khi tạo hình ảnh, bạn phải có clustermgrquyền đối với Cluster Manager Linode.

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE 

cd storm-linode

2.Chọn một tên duy nhất cho hình ảnh của bạn và tạo một thư mục cấu hình cho hình ảnh mới bằng lệnh new-image-conf. Trong ví dụ này, chúng ta sẽ gọi hình ảnh mới của mình zk-image1là:

./zookeeper-cluster-linode.sh new-image-conf zk-image1 

Thao tác này sẽ tạo ra một thư mục có tên zk-image1chứa các tập tin tạo nên cấu hình hình ảnh:

zk-image1.conf – Đây là tệp cấu hình hình ảnh chính và là tệp bạn sẽ sửa đổi nhiều nhất. Thuộc tính của tệp này được mô tả trong bước tiếp theo. Tệp này được đặt tên zk-image1.conftrong ví dụ của chúng tôi, nhưng nếu bạn chọn tên hình ảnh khác, tên của bạn có thể khác.

zoo.cfg – Đây là tệp cấu hình Zookeeper chính. Xem tài liệu tham số cấu hình Zookeeper chính thức để biết chi tiết về các tham số có thể tùy chỉnh. Không cần thiết phải nhập danh sách nút của cụm vào tệp này. Việc này được thực hiện tự động bởi tập lệnh trong quá trình tạo cụm.

log4j.properties – Tệp này thiết lập mức ghi nhật ký mặc định cho các thành phần Zookeeper. Bạn cũng có thể tùy chỉnh các mức này ở cấp nút khi cụm được tạo.

zk-supervisord.conf – Daemon Zookeeper được chạy dưới sự giám sát để nếu nó tắt đột ngột, nó sẽ tự động được Supervisord khởi động lại. Không có nhiều thứ để tùy chỉnh ở đây, nhưng bạn có thể tham khảo tài liệu Cấu hình Supervisord nếu bạn muốn tìm hiểu thêm về các tùy chọn.

3.Mở tệp cấu hình hình ảnh (trong ví dụ này là ./zk-image1/zk-image1.conf) trong trình soạn thảo văn bản. Nhập hoặc chỉnh sửa giá trị của thuộc tính cấu hình theo yêu cầu. Thuộc tính phải được nhập hoặc thay đổi từ giá trị mặc định của chúng được đánh dấu là BẮT BUỘC :

DISTRIBUTION_FOR_IMAGE

Chỉ định Ubuntu 14.04 hoặc Debian 8 để sử dụng cho hình ảnh này. Hướng dẫn này chưa được thử nghiệm trên bất kỳ phiên bản hoặc bản phân phối nào khác.

Tất cả các nút của tất cả các cụm được tạo từ hình ảnh này sẽ có bản phân phối này. Giá trị mặc định tương 124ứng với Ubuntu 14.04 LTS 64-bit. Đối với Debian 8 64-bit, hãy thay đổi giá trị này thành 140.

Ghi chú: Các giá trị được thể hiện trong hướng dẫn này là giá trị hiện tại tính đến thời điểm xuất bản, nhưng có thể thay đổi trong tương lai. Bạn có thể chạy ~/storm-linode/linode_api.py distributionsđể xem danh sách tất cả các bản phân phối khả dụng và giá trị của chúng trong API.

LABEL_FOR_IMAGE

Nhãn giúp bạn phân biệt hình ảnh này với các hình ảnh khác. Tên này sẽ được hiển thị nếu bạn chỉnh sửa hoặc xem hình ảnh của mình trong Linode Manager.

KERNEL_FOR_IMAGE

Phiên bản kernel do Linode cung cấp để sử dụng trong hình ảnh này. Giá trị mặc định là 138, tương ứng với kernel 64-bit mới nhất do Linode cung cấp. Bạn nên để giá trị này làm cài đặt mặc định.

DATACENTER_FOR_IMAGE

Trung tâm dữ liệu Linode nơi hình ảnh này sẽ được tạo. Đây có thể là bất kỳ trung tâm dữ liệu Linode nào, nhưng việc tạo cụm sẽ nhanh hơn nếu hình ảnh được tạo trong cùng một trung tâm dữ liệu nơi cụm sẽ được tạo. Bạn cũng nên tạo hình ảnh trong cùng một trung tâm dữ liệu với Cluster Manager Linode. Chọn một trung tâm dữ liệu gần về mặt địa lý với cơ sở của bạn để giảm độ trễ mạng. Nếu không thay đổi, Linode sẽ được tạo trong trung tâm dữ liệu Newark.

Giá trị này có thể là ID hoặc vị trí hoặc tên viết tắt của trung tâm dữ liệu. Để xem danh sách tất cả các trung tâm dữ liệu:

 ./zookeeper-cluster-linode.sh datacenters api_env_linode.conf

IMAGE_ROOT_PASSWORD– YÊU CẦU

Mật khẩu người dùng gốc mặc định cho hình ảnh. Tất cả các nút của bất kỳ cụm nào được tạo từ hình ảnh này sẽ có mật khẩu này làm mật khẩu gốc, trừ khi nó được ghi đè trong tệp cấu hình của cụm.

IMAGE_ROOT_SSH_PUBLIC_KEYIMAGE_ROOT_SSH_PRIVATE_KEY

Các tệp cặp khóa để xác thực khóa công khai SSH với tư cách là người dùng root. Bất kỳ người dùng nào đăng nhập bằng khóa riêng này đều có thể được xác thực là root.Theo mặc định, cluster_manager.shthiết lập đã tạo một cặp khóa có tên clusterrootvà clusterroot.pubnằm trong ~/.ssh/. Nếu bạn muốn thay thế chúng bằng cặp khóa của riêng mình, bạn có thể tạo khóa của riêng mình và đặt đường dẫn đầy đủ của chúng tại đây.

IMAGE_DISABLE_SSH_PASSWORD_AUTHENTICATION

Điều này vô hiệu hóa xác thực mật khẩu SSH và chỉ cho phép xác thực SSH dựa trên khóa cho các nút cụm. Xác thực mật khẩu được coi là kém an toàn hơn và do đó bị vô hiệu hóa theo mặc định. Để bật xác thực mật khẩu, bạn có thể thay đổi giá trị này thành no.

IMAGE_ADMIN_USER

Người quản trị hoặc nhà phát triển có thể phải đăng nhập vào các nút cụm để bảo trì. Thay vì đăng nhập với tư cách là người dùng root, tốt hơn là đăng nhập với tư cách là người dùng không phải root có đặc quyền. Tập lệnh tạo một người dùng có đặc quyền với tên này trong hình ảnh (và trong tất cả các nút cụm dựa trên hình ảnh này).

IMAGE_ADMIN_PASSWORD– YÊU CẦU

Đặt mật khẩu cho IMAGE_ADMIN_USER.

IMAGE_ADMIN_SSH_AUTHORIZED_KEYS

Tệp chứa khóa công khai của tất cả nhân viên được phép đăng nhập vào các nút cụm dưới dạng IMAGE_ADMIN_USER. Tệp này phải có cùng định dạng với tệp authorized_keys SSH chuẩn . Tất cả các mục trong tệp này được thêm vào authorized_keystệp của hình ảnh và được kế thừa vào tất cả các nút dựa trên hình ảnh này.Theo mặc định, cluster_manager.shthiết lập tạo một clusteradmincặp khóa mới và biến này được đặt thành đường dẫn của khóa công khai. Bạn có thể giữ lại cặp khóa đã tạo này và phân phối tệp khóa riêng đã tạo ~/.ssh/clusteradmincho nhân viên được ủy quyền. Ngoài ra, bạn có thể thu thập khóa công khai của nhân viên được ủy quyền và thêm chúng vào ~/.ssh/clusteradmin.pub.

IMAGE_DISK_SIZE

Kích thước của đĩa ảnh tính bằng MB. Giá trị mặc định là 5000MB thường là đủ, vì quá trình cài đặt chỉ bao gồm hệ điều hành có cài đặt phần mềm Java và Zookeeper.

UPGRADE_OS

Nếu yes, các gói phân phối được cập nhật và nâng cấp trước khi cài đặt bất kỳ phần mềm nào. Nên để nguyên cài đặt mặc định để tránh mọi sự cố cài đặt hoặc phụ thuộc.

INSTALL_ZOOKEEPER_DISTRIBUTION

Phiên bản Zookeeper để cài đặt. Theo mặc định, cluster_manager.shđã tải xuống phiên bản 3.4.6. Nếu bạn muốn cài đặt phiên bản khác, hãy tải xuống thủ công và thay đổi biến này. Tuy nhiên, bạn nên để nguyên giá trị mặc định vì hướng dẫn này chưa được thử nghiệm với các phiên bản khác.

ZOOKEEPER_INSTALL_DIRECTORY

Thư mục nơi Zookeeper sẽ được cài đặt trên hình ảnh (và trên tất cả các nút cụm được tạo từ hình ảnh này).

ZOOKEEPER_USER

Tên người dùng mà daemon Zookeeper chạy. Đây là tính năng bảo mật để tránh leo thang đặc quyền bằng cách khai thác một số lỗ hổng trong daemon Zookeeper.

ZOOKEEPER_MAX_HEAP_SIZE

Kích thước heap Java tối đa cho JVM lưu trữ daemon Zookeeper. Giá trị này có thể là phần trăm hoặc giá trị cố định. Nếu giá trị cố định không được thêm bất kỳ ký tự nào, nó sẽ được hiểu là byte. Nếu được thêm hậu tố KM, hoặc G, nó sẽ được hiểu là kilobyte, megabyte hoặc gigabyte.Nếu giá trị này quá thấp, có thể dẫn đến lỗi hết bộ nhớ và gây mất dữ liệu hoặc chậm trễ trong cụm Storm. Nếu giá trị này được đặt quá cao, bộ nhớ cho hệ điều hành và các quy trình của nó sẽ bị hạn chế, dẫn đến tình trạng quá tải đĩa, điều này sẽ có tác động tiêu cực đáng kể đến hiệu suất của Zookeeper.Giá trị mặc định là 75%, nghĩa là tối đa 75% RAM của Linode có thể được dành riêng cho JVM và 25% còn lại cho phần còn lại của hệ điều hành và các quy trình khác. Chúng tôi khuyến cáo không nên thay đổi cài đặt mặc định này.

ZOOKEEPER_MIN_HEAP_SIZE

Kích thước heap Java tối thiểu để cam kết cho JVM lưu trữ daemon Zookeeper. Giá trị này có thể là phần trăm hoặc giá trị cố định. Nếu giá trị cố định không được thêm bất kỳ ký tự nào, nó sẽ được hiểu là byte. Nếu được thêm hậu tố KM, hoặc G, nó sẽ được hiểu là kilobyte, megabyte hoặc gigabyte tương ứng.Nếu giá trị này thấp hơn ZOOKEEPER_MAX_HEAP_SIZE, thì lượng bộ nhớ này được cam kết và bộ nhớ bổ sung lên đến ZOOKEEPER_MAX_HEAP_SIZEchỉ được phân bổ khi JVM yêu cầu từ hệ điều hành. Điều này có thể dẫn đến sự chậm trễ phân bổ bộ nhớ trong quá trình hoạt động. Vì vậy, không nên đặt quá thấp.Giá trị này không bao giờ được lớn hơn ZOOKEEPER_MAX_HEAP_SIZE. Nếu lớn hơn, daemon Zookeeper sẽ không khởi động.Giá trị mặc định là 75%, nghĩa là 75% RAM của Linode được cam kết – không chỉ được dành riêng – cho JVM và không khả dụng cho bất kỳ quy trình nào khác. Chúng tôi khuyến cáo không nên thay đổi cài đặt mặc định này.

Khi bạn hoàn tất việc thực hiện thay đổi, hãy lưu và đóng trình chỉnh sửa.

4.Tạo hình ảnh bằng create-imagelệnh, chỉ định tên của hình ảnh mới tạo và tệp môi trường API:

./zookeeper-cluster-linode.sh create-image zk-image1 api_env_linode.conf

Nếu hình ảnh được tạo thành công, kết quả cuối cùng sẽ trông giống như thế này:

Deleting the temporary linode xxxxxx

Finished creating Zookeeper template image yyyyyy

Nếu quy trình không thành công, hãy đảm bảo rằng bạn không có Linode hiện có cùng tên trong Linode Manager. Nếu có, hãy xóa nó và chạy lại lệnh hoặc tạo lại hình ảnh này với tên khác.

Ghi chú: Trong quá trình này, một Linode 2GB tạm thời, tồn tại trong thời gian ngắn sẽ được tạo và xóa. Điều này sẽ kéo theo một khoản chi phí nhỏ trong hóa đơn hàng tháng của bạn và kích hoạt email thông báo sự kiện được gửi đến địa chỉ bạn đã đăng ký với Linode. Đây là hành vi dự kiến.

Tạo một cụm Zookeeper

Trong phần này, bạn sẽ học cách tạo một cụm Zookeeper mới trong đó mỗi nút là bản sao của một hình ảnh Zookeeper hiện có. Nếu bạn chưa tạo hình ảnh Zookeeper, hãy thực hiện trước bằng cách làm theo Tạo hình ảnh Zookeeper .

Ghi chú: Nếu cụm Zookeeper đã tồn tại, bước này không bắt buộc. Nhiều cụm Storm có thể chia sẻ cùng một cụm Zookeeper.Khi tạo cụm, bạn phải có clustermgrquyền đối với Trình quản lý cụm Linode.

Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE 

cd storm-linode

2.Chọn một tên duy nhất cho cụm của bạn và tạo một thư mục cấu hình bằng lệnh new-cluster-conf. Trong ví dụ này, chúng ta sẽ gọi cấu hình cụm mới của mình zk-cluster1là:

./zookeeper-cluster-linode.sh new-cluster-conf zk-cluster1 

Thao tác này tạo ra một thư mục có tên zk-cluster1chứa tệp cấu hình chính, zk-cluster1.conf, sẽ được mô tả trong bước tiếp theo. Nếu bạn chọn tên khác khi chạy lệnh trước đó, thư mục và tệp cấu hình của bạn sẽ được đặt tên tương ứng.

3.Mở tệp mới tạo zk-cluster1.confvà thực hiện thay đổi như mô tả bên dưới. Các thuộc tính phải được nhập hoặc thay đổi từ giá trị mặc định của chúng được đánh dấu là BẮT BUỘC :

DATACENTER_FOR_CLUSTER

Trung tâm dữ liệu Linode nơi các nút của cụm này sẽ được tạo. Tất cả các nút của cụm phải nằm trong cùng một trung tâm dữ liệu; chúng không thể trải rộng trên nhiều trung tâm dữ liệu vì chúng sẽ sử dụng lưu lượng mạng riêng để giao tiếp.

Đây có thể là bất kỳ trung tâm dữ liệu Linode nào, nhưng việc tạo cụm có thể nhanh hơn nếu nó được tạo trong cùng một trung tâm dữ liệu nơi hình ảnh và Trình quản lý cụm Linode được tạo. Nên chọn một trung tâm dữ liệu gần về mặt địa lý với cơ sở của bạn để giảm độ trễ mạng.

Giá trị này có thể là ID hoặc vị trí hoặc tên viết tắt của trung tâm dữ liệu. Để xem danh sách tất cả các trung tâm dữ liệu:

 ./zookeeper-cluster-linode.sh datacenters api_env_linode.conf

CLUSTER_SIZE

Các loại và số lượng các nút tạo nên cụm này. Cú pháp là:

plan:count plan:count ...

planlà một trong 2GB | 4GB | ... | 120GB(xem các gói Linode để biết tất cả các gói) và countlà số lượng nút có gói đó.

Ví dụ:

  • Đối với cụm có ba nút 4GB: CLUSTER_SIZE="4GB:3"
  • Đối với một cụm có ba nút có kế hoạch khác nhau: CLUSTER_SIZE="2GB:1 4GB:1 8GB:1"

Tổng số nút trong cụm Zookeeper phải là số lẻ. Mặc dù cụm có thể có các nút có các kế hoạch khác nhau, nhưng nên sử dụng cùng một kế hoạch cho tất cả các nút. Nên tránh các cụm quá lớn. Một cụm có 3-9 nút là đủ cho hầu hết các trường hợp sử dụng. 11-19 nút sẽ được coi là “lớn”. Bất kỳ thứ gì nhiều hơn 19 nút sẽ phản tác dụng, vì tại thời điểm đó, Zookeeper sẽ làm chậm tất cả các cụm Storm phụ thuộc vào nó.

Hãy cẩn thận khi thay đổi kích thước cụm, vì kể từ phiên bản 3.4.6, Zookeeper không hỗ trợ mở rộng động. Cách duy nhất để thay đổi kích thước là gỡ bỏ cụm và tạo cụm mới, tạo thời gian chết cho bất kỳ cụm Storm nào phụ thuộc vào cụm đó.

ZK_IMAGE_CONF– YÊU CẦU

Đường dẫn của thư mục hình ảnh Zookeeper hoặc tệp cấu hình để sử dụng làm mẫu để tạo các nút của cụm này. Đĩa của mỗi nút sẽ là bản sao của hình ảnh này.

Đường dẫn có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối với thư mục cấu hình cụm. Sử dụng ví dụ của chúng tôi, đường dẫn tuyệt đối sẽ là /home/clustermgr/storm-linode/zk-image1và đường dẫn tương đối sẽ là ../zk-image1.

NODE_DISK_SIZE

Kích thước đĩa của mỗi nút tính bằng MB. Kích thước này phải lớn ít nhất bằng kích thước đĩa của hình ảnh được chọn, nếu không hình ảnh sẽ không sao chép đúng cách.

NODE_ROOT_PASSWORD

Tùy chọn, bạn có thể chỉ định mật khẩu gốc cho các nút. Nếu mục này trống, mật khẩu gốc sẽ nằm IMAGE_ROOT_PASSWORDtrong tệp cấu hình hình ảnh.

NODE_ROOT_SSH_PUBLIC_KEYNODE_ROOT_SSH_PRIVATE_KEY

Tùy chọn, bạn có thể chỉ định tệp khóa công khai SSH tùy chỉnh và tệp khóa riêng tư để xác thực người dùng root. Nếu tệp này trống, các khóa sẽ là các khóa được chỉ định trong tệp cấu hình hình ảnh.

Nếu bạn muốn chỉ định cặp khóa của riêng mình, hãy chọn tên tệp mô tả cho cặp khóa mới này (ví dụ: zkcluster1root ), tạo chúng bằng cách sử dụng ssh-keygenvà đặt đường dẫn đầy đủ của chúng tại đây.

PUBLIC_HOST_NAME_PREFIX

Mỗi Linode trong cụm đều có một địa chỉ IP công khai , có thể truy cập từ bất kỳ đâu trên Internet và một địa chỉ IP riêng , chỉ có thể truy cập từ các nút khác của cùng một người dùng bên trong cùng một trung tâm dữ liệu.

Theo đó, mỗi nút được cấp một tên máy chủ công khai phân giải thành địa chỉ IP công khai của nó. Tên máy chủ công khai của mỗi nút sẽ sử dụng giá trị này theo sau là một số (ví dụ: public-host1public-host2, v.v.). Nếu nút quản lý cụm nằm trong một trung tâm dữ liệu Linode khác với các nút cụm, nó sẽ sử dụng tên máy chủ công khai và địa chỉ IP công khai để giao tiếp với các nút cụm.

PRIVATE_HOST_NAME_PREFIX

Mỗi Linode trong cụm được cấp một tên máy chủ riêng phân giải thành địa chỉ IP riêng của nó. Tên máy chủ riêng của mỗi nút sẽ sử dụng giá trị này theo sau là một số (ví dụ: private-host1, private-host2, v.v.). Tất cả các nút của cụm giao tiếp với nhau thông qua tên máy chủ riêng của chúng. Đây cũng là tên máy chủ thực tế được đặt cho nút bằng hostnamelệnh của máy chủ và được lưu trong /etc/hostname.

CLUSTER_MANAGER_USES_PUBLIC_IP

Đặt giá trị này thành falsenếu nút quản lý cụm nằm trong cùng một trung tâm dữ liệu Linode với các nút cụm. Đây là giá trị được khuyến nghị. true Chỉ thay đổi thành nếu nút quản lý cụm nằm trong một trung tâm dữ liệu Linode khác với các nút cụm.

Quan trọng: Điều quan trọng là phải thiết lập chính xác để tránh lỗi tạo cụm nghiêm trọng.

ZOOKEEPER_LEADER_CONNECTION_PORT

Cổng được nút Zookeeper sử dụng để kết nối những người theo dõi với người lãnh đạo. Khi một người lãnh đạo mới được bầu, mỗi người theo dõi sẽ mở một kết nối TCP với người lãnh đạo tại cổng này. Không cần phải thay đổi điều này trừ khi bạn có kế hoạch tùy chỉnh tường lửa.

ZOOKEEPER_LEADER_ELECTION_PORT

Cổng được sử dụng để bầu chọn người lãnh đạo Zookeeper trong thời gian đủ số lượng. Không cần phải thay đổi điều này, trừ khi bạn có kế hoạch tùy chỉnh tường lửa.

IPTABLES_V4_RULES_TEMPLATE

Đường dẫn tuyệt đối hoặc tương đối của tệp quy tắc tường lửa IPv4 iptables. Sửa đổi điều này nếu bạn có kế hoạch tùy chỉnh cấu hình tường lửa.

IPTABLES_V6_RULES_TEMPLATE

Đường dẫn tuyệt đối hoặc tương đối của tệp quy tắc tường lửa IPv6 iptables. IPv6 bị vô hiệu hóa hoàn toàn trên tất cả các nút và không có dịch vụ nào lắng nghe trên địa chỉ IPv6. Sửa đổi điều này nếu bạn có kế hoạch tùy chỉnh cấu hình tường lửa.

Khi bạn hoàn tất việc thực hiện thay đổi, hãy lưu và đóng trình chỉnh sửa.

4.Tạo cụm bằng createlệnh:

./zookeeper-cluster-linode.sh create zk-cluster1 api_env_linode.conf 

Nếu cụm được tạo thành công, thông báo thành công sẽ được in ra:

Zookeeper cluster successfully created 

Có thể xem chi tiết về cụm đã tạo bằng lệnh describe:

./zookeeper-cluster-linode.sh describe zk-cluster1 

Các nút cụm sẽ bị tắt ngay sau khi tạo. Chúng chỉ được khởi động khi bất kỳ cụm Storm nào khởi động.

Tạo hình ảnh cơn bão

Một hình ảnh Storm là một đĩa chính với tất cả các phần mềm và thư viện Storm cần thiết được tải xuống và cài đặt. Những lợi ích của việc tạo một hình ảnh Storm bao gồm:

Tạo nhanh một cụm Storm bằng cách chỉ cần sao chép nó để tạo ra nhiều nút tùy theo yêu cầu, mỗi nút là một bản sao hoàn hảo của hình ảnh

Các gói phân phối và các gói phần mềm của bên thứ ba giống hệt nhau trên tất cả các nút và ngăn ngừa lỗi không khớp phiên bản

Giảm mức sử dụng mạng, vì việc tải xuống và cập nhật chỉ được thực hiện một lần khi chuẩn bị hình ảnh, thay vì lặp lại chúng trên mỗi nút

Ghi chú: Nếu đã có hình ảnh Storm, bước này không bắt buộc. Nhiều cụm Storm có thể chia sẻ cùng một hình ảnh Zookeeper. Trên thực tế, bạn nên giữ số lượng hình ảnh ở mức thấp vì dung lượng lưu trữ hình ảnh bị giới hạn ở mức 10GB. Khi tạo hình ảnh, bạn phải có clustermgrquyền đối với Cluster Manager Linode.

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE
cd storm-linode

2.Chọn một tên duy nhất cho hình ảnh của bạn và tạo một thư mục cấu hình cho hình ảnh mới bằng new-image-conflệnh. Trong ví dụ này, chúng ta sẽ gọi hình ảnh mới của mình storm-image1là:

./storm-cluster-linode.sh new-image-conf storm-image1

Thao tác này sẽ tạo ra một thư mục có tên storm-image1chứa các tập tin tạo nên cấu hình hình ảnh:

  • storm-image1.conf – Đây là tệp cấu hình hình ảnh chính và là tệp bạn sẽ sửa đổi nhiều nhất. Thuộc tính của tệp này được mô tả trong các bước sau.

Các tệp khác là các tệp cấu hình thứ cấp. Chúng chứa các giá trị mặc định hợp lý, nhưng bạn luôn có thể mở chúng trong trình chỉnh sửa và sửa đổi chúng cho phù hợp với nhu cầu của mình:

  • template-storm.yaml – Tệp cấu hình Storm. Xem tài liệu Cấu hình Storm chính thức để biết chi tiết về các tham số có thể tùy chỉnh.
  • template-storm-supervisord.conf – Storm daemon được chạy dưới sự giám sát để nếu nó tắt đột ngột, nó sẽ tự động được Supervisord khởi động lại. Không có nhiều thứ để tùy chỉnh ở đây, nhưng hãy xem lại tài liệu Cấu hình Supervisord nếu bạn muốn tùy chỉnh.

4.Mở tệp cấu hình hình ảnh (trong ví dụ này là ~/storm-linode/storm-image1/storm-image1.conf) trong trình soạn thảo văn bản. Nhập hoặc chỉnh sửa các giá trị của thuộc tính cấu hình theo yêu cầu. Các thuộc tính phải được nhập hoặc thay đổi từ giá trị mặc định của chúng được đánh dấu là BẮT BUỘC :

DISTRIBUTION_FOR_IMAGE

Chỉ định Ubuntu 14.04 hoặc Debian 8 để sử dụng cho hình ảnh này. Hướng dẫn này chưa được thử nghiệm trên bất kỳ phiên bản hoặc bản phân phối nào khác.

Tất cả các nút của tất cả các cụm được tạo từ hình ảnh này sẽ có bản phân phối này. Giá trị mặc định tương 124ứng với Ubuntu 14.04 LTS 64-bit. Đối với Debian 8 64-bit, hãy thay đổi giá trị này thành 140.

Ghi chú: Các giá trị được thể hiện trong hướng dẫn này là giá trị hiện tại tính đến thời điểm xuất bản, nhưng có thể thay đổi trong tương lai. Bạn có thể chạy ~/storm-linode/linode_api.py distributionsđể xem danh sách tất cả các bản phân phối khả dụng và giá trị của chúng trong API.

LABEL_FOR_IMAGE

Nhãn giúp bạn phân biệt hình ảnh này với các hình ảnh khác. Tên này sẽ được hiển thị nếu bạn chỉnh sửa hoặc xem hình ảnh của mình trong Linode Manager.

KERNEL_FOR_IMAGE

Phiên bản kernel do Linode cung cấp để sử dụng trong hình ảnh này. Giá trị mặc định tương 138ứng với kernel 64-bit mới nhất do Linode cung cấp. Bạn nên để đây là cài đặt mặc định.

DATACENTER_FOR_IMAGE

Trung tâm dữ liệu Linode nơi hình ảnh này sẽ được tạo. Đây có thể là bất kỳ trung tâm dữ liệu Linode nào, nhưng việc tạo cụm sẽ nhanh hơn nếu hình ảnh được tạo trong cùng một trung tâm dữ liệu nơi cụm sẽ được tạo. Bạn cũng nên tạo hình ảnh trong cùng một trung tâm dữ liệu với Cluster Manager Linode. Chọn một trung tâm dữ liệu gần bạn về mặt địa lý để giảm độ trễ mạng.

Giá trị này có thể là ID hoặc vị trí hoặc tên viết tắt của trung tâm dữ liệu. Để xem danh sách tất cả các trung tâm dữ liệu:

 ./zookeeper-cluster-linode.sh datacenters api_env_linode.conf

IMAGE_ROOT_PASSWORD– YÊU CẦU

Mật khẩu người dùng gốc mặc định cho hình ảnh. Tất cả các nút của bất kỳ cụm nào được tạo từ hình ảnh này sẽ có mật khẩu này làm mật khẩu gốc, trừ khi nó được ghi đè trong tệp cấu hình của cụm.

IMAGE_ROOT_SSH_PUBLIC_KEYIMAGE_ROOT_SSH_PRIVATE_KEY

Các tệp cặp khóa để xác thực khóa công khai SSH với tư cách là người dùng root. Bất kỳ người dùng nào đăng nhập bằng khóa riêng này đều có thể được xác thực với tư cách là root.

Theo mặc định, cluster_manager.shthiết lập đã tạo một cặp khóa có tên clusterrootvà clusterroot.pubnằm trong ~/.ssh/. Nếu bạn muốn thay thế chúng bằng cặp khóa của riêng mình, bạn có thể tạo khóa của riêng mình và đặt đường dẫn đầy đủ của chúng tại đây.

IMAGE_DISABLE_SSH_PASSWORD_AUTHENTICATION

Điều này vô hiệu hóa xác thực mật khẩu SSH và chỉ cho phép xác thực SSH dựa trên khóa cho các nút cụm. Xác thực mật khẩu được coi là kém an toàn hơn và do đó bị vô hiệu hóa theo mặc định. Để bật xác thực mật khẩu, bạn có thể thay đổi giá trị này thành no.

IMAGE_ADMIN_USER

Người quản trị hoặc nhà phát triển có thể phải đăng nhập vào các nút cụm để bảo trì. Thay vì đăng nhập với tư cách là người dùng root, tốt hơn là đăng nhập với tư cách là người dùng không phải root có đặc quyền. Tập lệnh tạo một người dùng có đặc quyền với tên này trong hình ảnh (và trong tất cả các nút cụm dựa trên hình ảnh này).

IMAGE_ADMIN_PASSWORD– YÊU CẦU

Đặt mật khẩu cho IMAGE_ADMIN_USER.

IMAGE_ADMIN_SSH_AUTHORIZED_KEYS

Tệp chứa khóa công khai của tất cả nhân viên được phép đăng nhập vào các nút cụm dưới dạng IMAGE_ADMIN_USER. Tệp này phải có cùng định dạng với tệp authorized_keys SSH chuẩn . Tất cả các mục trong tệp này được thêm vào authorized_keystệp của hình ảnh và được kế thừa vào tất cả các nút dựa trên hình ảnh này.

Theo mặc định, cluster_manager.shthiết lập tạo một clusteradmincặp khóa mới và biến này được đặt thành đường dẫn của khóa công khai. Bạn có thể giữ lại cặp khóa đã tạo này và phân phối tệp khóa riêng đã tạo ~/.ssh/clusteradmincho nhân viên được ủy quyền. Ngoài ra, bạn có thể thu thập khóa công khai của nhân viên được ủy quyền và thêm chúng vào ~/.ssh/clusteradmin.pub.

IMAGE_DISK_SIZE

Kích thước của đĩa ảnh tính bằng MB. Giá trị mặc định là 5000MB thường là đủ, vì quá trình cài đặt chỉ bao gồm hệ điều hành có cài đặt phần mềm Java và Storm.

UPGRADE_OS

Nếu yes, các gói phân phối được cập nhật và nâng cấp trước khi cài đặt bất kỳ phần mềm nào. Nên để nguyên cài đặt mặc định để tránh mọi sự cố cài đặt hoặc phụ thuộc.

INSTALL_STORM_DISTRIBUTION

Phiên bản Storm để cài đặt. Theo mặc định, cluster_manager.shthiết lập đã tải xuống phiên bản 0.9.5. Nếu bạn muốn cài đặt phiên bản khác, hãy tải xuống thủ công và thay đổi biến này. Tuy nhiên, bạn nên để nguyên giá trị mặc định vì hướng dẫn này chưa được thử nghiệm với các phiên bản khác.

STORM_INSTALL_DIRECTORY

Thư mục nơi Storm sẽ được cài đặt trên hình ảnh (và trên tất cả các nút cụm được tạo từ hình ảnh này).

STORM_YAML_TEMPLATE

Đường dẫn của storm.yamltệp cấu hình mẫu để cài đặt trong ảnh. Theo mặc định, nó trỏ đến template-storm.yamltệp trong thư mục ảnh. Người quản trị có thể tùy chỉnh tệp YAML này trước khi tạo ảnh hoặc đặt biến này để trỏ đến tệp khác storm.yamltheo lựa chọn của họ.

STORM_USER

Tên người dùng mà daemon Storm chạy. Đây là tính năng bảo mật để tránh leo thang đặc quyền bằng cách khai thác một số lỗ hổng trong daemon Storm.

SUPERVISORD_TEMPLATE_CONF

Đường dẫn của tệp cấu hình giám sát mẫu để cài đặt trong ảnh. Theo mặc định, nó trỏ đến tệp template-storm-supervisord.conftrong thư mục ảnh Storm. Người quản trị có thể sửa đổi tệp này trước khi tạo ảnh hoặc đặt biến này để trỏ đến bất kỳ storm-supervisord.conftệp nào khác mà họ chọn.

Sau khi thực hiện thay đổi, hãy lưu và đóng trình chỉnh sửa.

4.Tạo hình ảnh bằng lệnh create-image, chỉ định tên của hình ảnh mới tạo và tệp môi trường API:

./storm-cluster-linode.sh create-image storm-image1 api_env_linode.conf

Nếu hình ảnh được tạo thành công, kết quả đầu ra sẽ trông giống như thế này vào cuối:

....
Deleting the temporary linode xxxxxx

Finished creating Storm template image yyyyyy

Nếu quy trình không thành công, hãy đảm bảo rằng bạn không có hình ảnh Storm hiện có cùng tên trong Linode Manager. Nếu có, hãy xóa hình ảnh đó và chạy lại lệnh hoặc tạo lại hình ảnh này với tên khác.

Ghi chú: Trong quá trình này, một Linode 2GB tồn tại trong thời gian ngắn sẽ được tạo và xóa. Điều này sẽ kéo theo một khoản chi phí nhỏ trong hóa đơn hàng tháng và kích hoạt email thông báo sự kiện được gửi đến địa chỉ bạn đã đăng ký với Linode. Đây là hành vi dự kiến.

Tạo một cụm bão

Trong phần này, bạn sẽ học cách tạo một cụm Storm mới trong đó mỗi nút là bản sao của một hình ảnh Storm hiện có. Nếu bạn chưa tạo bất kỳ hình ảnh Storm nào, hãy thực hiện trước bằng cách làm theo Tạo hình ảnh Storm .

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE
cd storm-linode

2.Chọn một tên duy nhất cho cụm của bạn và tạo một thư mục cấu hình bằng lệnh new-cluster-conf. Trong ví dụ này, chúng ta sẽ gọi cấu hình cụm mới của mình storm-cluster1là:

./storm-cluster-linode.sh new-cluster-conf storm-cluster1

Thao tác này tạo ra một thư mục có tên storm-cluster1chứa tệp cấu hình chính, storm-cluster1.conf, sẽ được mô tả trong bước tiếp theo. Nếu bạn chọn tên khác khi chạy lệnh trước đó, thư mục và tệp cấu hình của bạn sẽ được đặt tên tương ứng.

3.Mở tệp mới tạo storm-cluster1.confvà thực hiện thay đổi như mô tả bên dưới. Các thuộc tính phải được nhập hoặc thay đổi từ giá trị mặc định của chúng được đánh dấu là BẮT BUỘC :

DATACENTER_FOR_CLUSTER

Trung tâm dữ liệu Linode nơi các nút của cụm này sẽ được tạo. Tất cả các nút của cụm phải nằm trong cùng một trung tâm dữ liệu; chúng không thể trải rộng trên nhiều trung tâm dữ liệu vì chúng sẽ sử dụng lưu lượng mạng riêng để giao tiếp.

Đây có thể là bất kỳ trung tâm dữ liệu Linode nào, nhưng việc tạo cụm có thể nhanh hơn nếu nó được tạo trong cùng một trung tâm dữ liệu nơi hình ảnh và Trình quản lý cụm Linode được tạo. Nên chọn một trung tâm dữ liệu gần về mặt địa lý với cơ sở của bạn để giảm độ trễ mạng.

Giá trị này có thể là ID hoặc vị trí hoặc tên viết tắt của trung tâm dữ liệu. Để xem danh sách tất cả các trung tâm dữ liệu:

 ./zookeeper-cluster-linode.sh datacenters api_env_linode.conf

NIMBUS_NODE

Phần này chỉ định gói Linode sẽ sử dụng cho nút Nimbus, nút này chịu trách nhiệm phân phối và phối hợp cấu trúc Storm cho các nút giám sát.

Nó phải là một trong 2GB | 4GB | ... | 120GB(xem các gói Linode cho tất cả các gói). Kích thước mặc định là 2GB, nhưng chúng tôi khuyến nghị nên dùng gói lớn hơn cho nút Nimbus.

SUPERVISOR_NODES

Các nút giám sát là những con ngựa thồ thực hiện các vòi và bu lông tạo nên cấu trúc Storm.

Kích thước và số lượng các nút giám sát phải được quyết định dựa trên số lượng các cấu trúc mà cụm phải chạy đồng thời và độ phức tạp tính toán của các vòi và bu lông của chúng. Cú pháp là:

plan:count plan:count ...

planlà một trong 2GB | 4GB| ....| 120GB(xem các kế hoạch Linode cho tất cả các kế hoạch) và countlà số lượng các nút giám sát với kế hoạch đó. Mặc dù một cụm có thể có các nút giám sát có kích thước khác nhau, nhưng nên sử dụng cùng một kế hoạch cho tất cả các nút.

Số lượng nút giám sát có thể được tăng lên sau này bằng cách sử dụng add-nodeslệnh (xem Mở rộng cụm ).

Ví dụ:

  • Tạo ba nút 4GB:SUPERVISOR_NODES="4GB:3"
  • Tạo sáu nút với ba kế hoạch khác nhau:SUPERVISOR_NODES="2GB:2 4GB:2 8GB:2"

CLIENT_NODE

Nút máy khách của cụm được sử dụng để gửi cấu trúc đến cụm và giám sát cụm. Đây phải là một trong 2GB | 4GB | ... | 120GB(xem các gói Linode cho tất cả các gói). Giá trị mặc định là 2GB là đủ cho hầu hết các trường hợp sử dụng.

STORM_IMAGE_CONF– YÊU CẦU

Đường dẫn của thư mục hình ảnh Storm hoặc tệp cấu hình để sử dụng làm mẫu để tạo các nút của cụm này. Đĩa của mỗi nút sẽ là bản sao của hình ảnh này.

Đường dẫn có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối với thư mục cấu hình cụm này. Sử dụng ví dụ của chúng tôi, đường dẫn tuyệt đối sẽ là /home/clustermgr/storm-linode/storm-image1và đường dẫn tương đối sẽ là ../storm-image1.

NODE_DISK_SIZE

Kích thước đĩa của mỗi nút tính bằng MB. Kích thước này phải lớn ít nhất bằng kích thước đĩa của hình ảnh được chọn, nếu không hình ảnh sẽ không sao chép đúng cách.

NODE_ROOT_PASSWORD

Tùy chọn, bạn có thể chỉ định mật khẩu gốc cho các nút. Nếu mục này trống, mật khẩu gốc sẽ nằm IMAGE_ROOT_PASSWORDtrong tệp cấu hình hình ảnh.

NODE_ROOT_SSH_PUBLIC_KEYNODE_ROOT_SSH_PRIVATE_KEY

Tùy chọn, bạn có thể chỉ định tệp khóa công khai SSH tùy chỉnh và tệp khóa riêng tư để xác thực người dùng root. Nếu tệp này trống, các khóa sẽ là các khóa được chỉ định trong tệp cấu hình hình ảnh.

Nếu bạn muốn chỉ định cặp khóa của riêng mình, hãy chọn tên tệp mô tả cho cặp khóa mới này (ví dụ: zkcluster1root ), tạo chúng bằng cách sử dụng ssh-keygenvà đặt đường dẫn đầy đủ của chúng tại đây.

NIMBUS_NODE_PUBLIC_HOSTNAMESUPERVISOR_NODES_PUBLIC_HOSTNAME_PREFIXCLIENT_NODES_PUBLIC_HOSTNAME_PREFIX

Mỗi Linode trong cụm đều có một địa chỉ IP công khai , có thể truy cập từ bất kỳ đâu trên Internet và một địa chỉ IP riêng , chỉ có thể truy cập từ các nút khác của cùng một người dùng bên trong cùng một trung tâm dữ liệu.

Theo đó, mỗi nút được cấp một tên máy chủ công khai phân giải thành địa chỉ IP công khai của nó. Tên máy chủ công khai của mỗi nút sẽ sử dụng giá trị này theo sau là một số (ví dụ: public-host1public-host2, v.v.). Nếu nút quản lý cụm nằm trong một trung tâm dữ liệu Linode khác với các nút cụm, nó sẽ sử dụng tên máy chủ công khai và địa chỉ IP công khai để giao tiếp với các nút cụm.

NIMBUS_NODE_PRIVATE_HOSTNAMESUPERVISOR_NODES_PRIVATE_HOSTNAME_PREFIXCLIENT_NODES_PRIVATE_HOSTNAME_PREFIX

Mỗi Linode trong cụm được cấp một tên máy chủ riêng phân giải thành địa chỉ IP riêng của nó. Tên máy chủ riêng của mỗi nút sẽ sử dụng giá trị này theo sau là một số (ví dụ: private-host1, private-host2, v.v.). Tất cả các nút của cụm giao tiếp với nhau thông qua tên máy chủ riêng của chúng. Đây cũng là tên máy chủ thực tế được đặt cho nút bằng hostnamelệnh của máy chủ và được lưu trong /etc/hostname.

CLUSTER_MANAGER_USES_PUBLIC_IP

Đặt giá trị này thành falsenếu nút quản lý cụm nằm trong cùng một trung tâm dữ liệu Linode với các nút cụm. Đây là giá trị được khuyến nghị và cũng là giá trị mặc định. true Chỉ thay đổi thành nếu nút quản lý cụm nằm trong một trung tâm dữ liệu Linode khác với các nút cụm.

Quan trọng: Điều quan trọng là phải thiết lập chính xác để tránh lỗi tạo cụm nghiêm trọng.

ZOOKEEPER_CLUSTER– YÊU CẦU

Đường dẫn đến thư mục cụm Zookeeper sẽ được cụm Storm này sử dụng.Đây có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối liên quan đến thư mục cấu hình cụm Storm này. Sử dụng ví dụ của chúng tôi, đường dẫn tuyệt đối sẽ là /home/clustermgr/storm-linode/zk-cluster1, và đường dẫn tương đối sẽ là ../zk-cluster1.

IPTABLES_V4_RULES_TEMPLATE

Đường dẫn tuyệt đối hoặc tương đối của tệp quy tắc tường lửa IPv4 iptables được áp dụng cho các nút Nimbus và Supervisor. Sửa đổi điều này nếu bạn có kế hoạch tùy chỉnh cấu hình tường lửa của chúng.

IPTABLES_CLIENT_V4_RULES_TEMPLATE

Đường dẫn tuyệt đối hoặc tương đối của tệp quy tắc tường lửa IPv4 iptables được áp dụng cho nút Clien

t. Vì nút client lưu trữ máy chủ web giám sát cụm và có thể truy cập được đối với quản trị viên và nhà phát triển, nên các quy tắc của nút này khác với các quy tắc của các nút khác. Sửa đổi điều này nếu bạn có kế hoạch tùy chỉnh cấu hình tường lửa của nút này.Mặc định:../template-storm-client-iptables-rules.v4

IPTABLES_V6_RULES_TEMPLATE

Đường dẫn tuyệt đối hoặc tương đối của tệp quy tắc tường lửa IPv6 iptables được theo dõi cho tất cả các nút, bao gồm cả nút máy khách. IPv6 bị vô hiệu hóa hoàn toàn trên tất cả các nút và không có dịch vụ nào lắng nghe trên các địa chỉ IPv6. Sửa đổi điều này nếu bạn có kế hoạch tùy chỉnh cấu hình tường lửa.

Khi bạn hoàn tất việc thực hiện thay đổi, hãy lưu và đóng trình chỉnh sửa.

4.Tạo cụm bằng createlệnh:

./storm-cluster-linode.sh create storm-cluster1 api_env_linode.conf

Nếu cụm được tạo thành công, thông báo thành công sẽ được in ra:

Storm cluster successfully created

Có thể xem chi tiết về cụm đã tạo bằng lệnh describe:

./storm-cluster-linode.sh describe storm-cluster1 

Các nút cụm sẽ bị tắt ngay sau khi được tạo.

Bắt đầu một cụm bão

Phần này sẽ giải thích cách bắt đầu một cụm Storm. Làm như vậy cũng sẽ bắt đầu bất kỳ cụm Zookeeper nào mà nó phụ thuộc, do đó không cần phải bắt đầu riêng rẽ.

Ghi chú: Khi bắt đầu một cụm, bạn phải có clustermgrquyền đối với Trình quản lý cụm Linode.

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE 

cd storm-linode

2.Bắt đầu cụm Storm bằng startlệnh. Ví dụ này sử dụng storm-cluster1quy ước đặt tên ở trên, nhưng nếu bạn chọn tên khác, bạn nên thay thế nó trong lệnh:

./storm-cluster-linode.sh start storm-cluster1 api_env_linode.conf

3.Nếu cụm được khởi động lần đầu tiên, hãy xem phần tiếp theo để biết cách ủy quyền cho người dùng giám sát cụm Storm .

Theo dõi cụm bão

Mỗi nút máy khách của cụm Storm đều chạy ứng dụng web Storm UI để giám sát cụm đó, nhưng chỉ có thể truy cập từ các máy trạm được phép.

Hai phần tiếp theo giải thích cách cho phép các máy trạm và giám sát cụm từ giao diện web.

Cho phép các máy trạm giám sát cụm bão

Khi thực hiện các bước trong phần này, bạn phải có clustermgrquyền đối với Cluster Manager Linode.

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE
cd storm-linode

2.Mở your-cluster/your-cluster-client-user-whitelist.ipsetstệp (sử dụng ví dụ ở trên, storm-cluster1/storm-cluster1-client-user-whitelist.ipsets) trong trình soạn thảo văn bản.Tệp này là danh sách ipsets các địa chỉ IP được phép. Tệp này bao gồm một ipset chính và nhiều ipset con liệt kê các máy được phép theo địa chỉ IP hoặc các thuộc tính khác như MAC ID.Ipset chính được đặt tên là your-cluster-uwls . Theo mặc định, nó hoàn toàn trống rỗng, nghĩa là không ai được phép.ipset chính3.Để cho phép địa chỉ IP:

  • Bỏ ghi chú dòng tạo ra ipset your-cluster-ipwlThêm địa chỉ IP bên dưới nóThêm your-cluster-ipwl vào ipset chính your-cluster-uwls
Những bổ sung này được nêu bật dưới đây:Các mục nhập danh sách trắng

4.Có thể tạo bất kỳ số lượng hoặc loại ipset bổ sung nào, miễn là chúng được thêm vào ipset chính.Xem phần Set Types trong hướng dẫn sử dụng ipset để biết các loại ipset khả dụng. Lưu ý rằng một số loại được liệt kê trong hướng dẫn sử dụng có thể không khả dụng trên nút máy khách vì phiên bản ipset được cài đặt trên đó bằng trình quản lý gói Ubuntu hoặc Debian có thể là phiên bản cũ hơn.

5.Nhập tất cả các ipset cần thiết, lưu tệp và đóng trình soạn thảo.

6.Kích hoạt ipsets mới bằng update-user-whitelistlệnh:

./storm-cluster-linode.sh update-user-whitelist storm-cluster1

7.Đăng nhập vào nút máy khách từ Cluster Manager Linode:

ssh -i ~/.ssh/clusterroot root@storm-cluster1-private-client1 

Kiểm tra xem ipset mới đã được cấu hình đúng chưa:

ipset list

Bạn sẽ thấy đầu ra tương tự như sau (ngoài các ipset tùy chỉnh nếu bạn đã thêm chúng và các ipset cho các nút cụm Storm và Zookeeper):

đầu ra ipset

Ngắt kết nối khỏi nút máy khách và điều hướng trở lại storm-linodethư mục trên nút quản lý cụm:

exit

8.Từ nút quản lý cụm, lấy địa chỉ IP công khai của nút máy khách. Địa chỉ IP này phải được cung cấp cho người dùng được phép truy cập ứng dụng web giám sát Storm UI. Để hiển thị địa chỉ IP, hãy sử dụng lệnh describe:

./storm-cluster-linode.sh describe storm-cluster1

9.Cuối cùng, hãy xác minh rằng ứng dụng web Storm UI có thể truy cập được bằng cách mở http://public-IP-of-client-nodetrong trình duyệt web trên mỗi máy trạm được liệt kê trắng. Bạn sẽ thấy ứng dụng web Storm UI trông như thế này:Storm UIGiao diện người dùng Storm hiển thị danh sách các cấu trúc mạng và danh sách các giám sát viên thực thi chúng:Storm UI monitoringNếu cụm đang thực hiện bất kỳ cấu trúc nào, chúng sẽ được liệt kê trong phần Tóm tắt cấu trúc . Nhấp vào cấu trúc để truy cập số liệu thống kê, nhật ký nút giám sát hoặc các hành động như hủy cấu trúc đó.

Kiểm tra cụm bão mới

1.Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:

ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE 

cd storm-linode

2.Lấy địa chỉ IP riêng của nút máy khách của cụm mục tiêu. Điều này được ưu tiên vì lý do bảo mật và giảm thiểu tác động đến hạn ngạch truyền dữ liệu, nhưng địa chỉ IP công khai cũng hoạt động tốt:

./storm-cluster-linode.sh describe storm-cluster1

3.Đăng nhập vào nút máy khách với tư cách là IMAGE_ADMIN_USERngười dùng (mặc định là clusteradmin, được cấu hình trong tệp cấu hình hình ảnh Storm) qua SSH bằng khóa riêng được ủy quyền:

ssh -i ~/.ssh/clusterdmin clusteradmin@192.168.42.13

4.Chạy các lệnh sau để bắt đầu ví dụ về số lượng từ được cài đặt sẵn:

cd /opt/apache-storm-0.9.5/bin ./storm jar ../examples/storm-starter/storm-starter-topologies-0.9.5.jar storm.starter.WordCountTopology "wordcount"

5.Một bài nộp thành công sẽ cho ra kết quả tương tự như sau:

Running: java -client -Dstorm.options= -Dstorm.home=/opt/apache-storm-0.9.5 -Dstorm.log.dir=/var/log/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp /opt/apache-storm-0.9.5/lib/disruptor-2.10.1.jar:/opt/apache-storm-0.9.5/lib/minlog-1.2.jar:/opt/apache-storm-0.9.5/lib/commons-io-2.4.jar:/opt/apache-storm-0.9.5/lib/clj-time-0.4.1.jar:/opt/apache-storm-0.9.5/lib/clout-1.0.1.jar:/opt/apache-storm-0.9.5/lib/ring-devel-0.3.11.jar:/opt/apache-storm-0.9.5/lib/tools.macro-0.1.0.jar:/opt/apache-storm-0.9.5/lib/ring-jetty-adapter-0.3.11.jar:/opt/apache-storm-0.9.5/lib/jetty-util-6.1.26.jar:/opt/apache-storm-0.9.5/lib/commons-exec-1.1.jar:/opt/apache-storm-0.9.5/lib/tools.cli-0.2.4.jar:/opt/apache-storm-0.9.5/lib/objenesis-1.2.jar:/opt/apache-storm-0.9.5/lib/jetty-6.1.26.jar:/opt/apache-storm-0.9.5/lib/ring-servlet-0.3.11.jar:/opt/apache-storm-0.9.5/lib/storm-core-0.9.5.jar:/opt/apache-storm-0.9.5/lib/hiccup-0.3.6.jar:/opt/apache-storm-0.9.5/lib/clojure-1.5.1.jar:/opt/apache-storm-0.9.5/lib/commons-codec-1.6.jar:/opt/apache-storm-0.9.5/lib/servlet-api-2.5.jar:/opt/apache-storm-0.9.5/lib/compojure-1.1.3.jar:/opt/apache-storm-0.9.5/lib/json-simple-1.1.jar:/opt/apache-storm-0.9.5/lib/commons-logging-1.1.3.jar:/opt/apache-storm-0.9.5/lib/math.numeric-tower-0.0.1.jar:/opt/apache-storm-0.9.5/lib/asm-4.0.jar:/opt/apache-storm-0.9.5/lib/commons-lang-2.5.jar:/opt/apache-storm-0.9.5/lib/clj-stacktrace-0.2.2.jar:/opt/apache-storm-0.9.5/lib/kryo-2.21.jar:/opt/apache-storm-0.9.5/lib/logback-classic-1.0.13.jar:/opt/apache-storm-0.9.5/lib/slf4j-api-1.7.5.jar:/opt/apache-storm-0.9.5/lib/reflectasm-1.07-shaded.jar:/opt/apache-storm-0.9.5/lib/ring-core-1.1.5.jar:/opt/apache-storm-0.9.5/lib/joda-time-2.0.jar:/opt/apache-storm-0.9.5/lib/logback-core-1.0.13.jar:/opt/apache-storm-0.9.5/lib/snakeyaml-1.11.jar:/opt/apache-storm-0.9.5/lib/carbonite-1.4.0.jar:/opt/apache-storm-0.9.5/lib/tools.logging-0.2.3.jar:/opt/apache-storm-0.9.5/lib/core.incubator-0.1.0.jar:/opt/apache-storm-0.9.5/lib/chill-java-0.3.5.jar:/opt/apache-storm-0.9.5/lib/jgrapht-core-0.9.0.jar:/opt/apache-storm-0.9.5/lib/jline-2.11.jar:/opt/apache-storm-0.9.5/lib/commons-fileupload-1.2.1.jar:/opt/apache-storm-0.9.5/lib/log4j-over-slf4j-1.6.6.jar:../examples/storm-starter/storm-starter-topologies-0.9.5.jar:/opt/apache-storm-0.9.5/conf:/opt/apache-storm-0.9.5/bin -Dstorm.jar=../examples/storm-starter/storm-starter-topologies-0.9.5.jar storm.starter.WordCountTopology wordcount 1038 [main] INFO backtype.storm.StormSubmitter - Jar not uploaded to master yet. Submitting jar... 1061 [main] INFO backtype.storm.StormSubmitter - Uploading topology jar ../examples/storm-starter/storm-starter-topologies-0.9.5.jar to assigned location: /var/lib/storm/nimbus/inbox/stormjar-3a9e3c47-88c3-44c2-9084-046f31e57668.jar Start uploading file '../examples/storm-starter/storm-starter-topologies-0.9.5.jar' to '/var/lib/storm/nimbus/inbox/stormjar-3a9e3c47-88c3-44c2-9084-046f31e57668.jar' (3248678 bytes) [==================================================] 3248678 / 3248678 File '../examples/storm-starter/storm-starter-topologies-0.9.5.jar' uploaded to '/var/lib/storm/nimbus/inbox/stormjar-3a9e3c47-88c3-44c2-9084-046f31e57668.jar' (3248678 bytes) 1260 [main] INFO backtype.storm.StormSubmitter - Successfully uploaded topology jar to assigned location: /var/lib/storm/nimbus/inbox/stormjar-3a9e3c47-88c3-44c2-9084-046f31e57668.jar 1261 [main] INFO backtype.storm.StormSubmitter - Submitting topology wordcount in distributed mode with conf {"topology.workers":3,"topology.debug":true} 2076 [main] INFO backtype.storm.StormSubmitter - Finished submitting topology: wordcount

Xác minh rằng cấu trúc đang chạy đúng bằng cách mở Storm UI trong trình duyệt web. Cấu trúc “wordcount” sẽ hiển thị trong phần Tóm tắt cấu trúc .

Các hướng dẫn ở trên sẽ sử dụng cấu trúc “wordcount” mẫu, không cung cấp đầu ra có thể nhìn thấy để hiển thị kết quả của các thao tác đang chạy. Tuy nhiên, cấu trúc này chỉ đếm các từ trong các câu được tạo ra, do đó, số bên dưới “Emitted” là số từ thực tế.

Để có bài kiểm tra thực tế hơn, hãy thoải mái tải xuống một cấu trúc liên kết khác, chẳng hạn như Reddit Comment Sentiment Analysis Topology , công cụ này đưa ra danh sách cơ bản các chủ đề trong các subreddit nhất định, dựa trên đó có nhiều bình luận tích cực và tiêu cực nhất theo thời gian. Nếu bạn chọn tải xuống cấu trúc liên kết của bên thứ ba, hãy đảm bảo rằng đó là từ một nguồn đáng tin cậy và bạn tải xuống đúng thư mục.

Bắt đầu một Topology mới

Nếu bạn hoặc nhà phát triển đã tạo cấu trúc mạng, hãy thực hiện các bước sau để bắt đầu cấu trúc mạng mới trên một trong các cụm Linode Storm của bạn:Ghi chú

Nhà phát triển phải có clusteradmin(hoặc clusterroot) quyền đăng nhập vào nút máy khách của cụm Storm mục tiêu.

Tùy chọn, để lấy địa chỉ IP của nút máy khách, nhà phát triển phải có clustermgrguest(hoặc clustermgrroot) quyền đăng nhập vào Cluster Manager Linode. Nếu địa chỉ IP được biết đến bằng các phương pháp khác, thì không cần quyền này.

  1. Đóng gói cấu trúc mạng của bạn cùng với tất cả các lớp của bên thứ ba mà chúng phụ thuộc vào thành một tệp JAR (Java Archive) duy nhất.
  2. Nếu triển khai nhiều cụm, hãy chọn cụm Storm mục tiêu để chạy cấu trúc mạng. Lấy địa chỉ IP công khai của nút máy khách của cụm mục tiêu. Xem mô tả cụm để biết chi tiết về cách thực hiện việc này.
  3. Chuyển JAR cấu trúc từ máy trạm cục bộ của bạn sang nút máy khách:scp -i ~/.ssh/private-key local-topology-path clusteradmin@public-ip-of-client-node:topology-jar Thay thế private-keycho khóa riêng của máy khách Storm, local-topology-pathcho đường dẫn tệp cục bộ của tệp JAR, PUBLIC-IP-OF-CLIENT-NODEcho địa chỉ IP của máy khách Storm và topology-jarcho đường dẫn tệp mà bạn muốn sử dụng để lưu trữ cấu trúc trên nút máy khách.
  4. Đăng nhập vào nút máy khách với tư cách là clusteradmin, thay thế các giá trị thích hợp:ssh -i ~/.ssh/private-key clusteradmin@PUBLIC-IP-OF-CLIENT-NODE
  5. Gửi cấu trúc mạng tới cụm:cd /opt/apache-storm-0.9.5/bin ./storm jar topology-jar.jar main-class arguments-for-topology Thay thế topology-jar.jarđường dẫn đến tệp JAR mà bạn muốn gửi, main-classbằng lớp chính của cấu trúc mạng và arguments-for-topologycác đối số được lớp chính của cấu trúc mạng chấp nhận.
  6. Theo dõi việc thực hiện cấu trúc mạng mới.

Ghi chúGiao diện người dùng Storm sẽ chỉ hiển thị thông tin về quá trình thực thi của cấu trúc, không phải dữ liệu thực tế mà nó đang xử lý. Dữ liệu, bao gồm cả đích đầu ra của nó, được xử lý trong các tệp JAR của cấu trúc.

Các hoạt động cụm bão khác

Trong phần này, chúng tôi sẽ đề cập đến các hoạt động bổ sung để quản lý cụm Storm của bạn sau khi cụm này đã hoạt động.

Tất cả các lệnh trong phần này phải được thực hiện từ storm-linodethư mục trên trình quản lý cụm Linode. Bạn sẽ cần clustermgrcác đặc quyền trừ khi được chỉ định khác.

Mở rộng cụm bão

Nếu các nút giám sát của cụm Storm bị quá tải với quá nhiều cấu trúc mạng hoặc các công việc khác đòi hỏi nhiều CPU, việc thêm nhiều nút giám sát hơn có thể giúp giảm bớt một số tải.

Mở rộng cụm bằng lệnh add-nodes, chỉ định các kế hoạch và số lượng cho các nút mới. Ví dụ, để thêm ba nút giám sát 4GB mới vào cụm có tên storm-cluster1:

./storm-cluster-linode.sh add-nodes storm-cluster1 api_env_linode.conf "4GB:3"

Hoặc, để thêm một nút giám sát 2GB và hai nút giám sát 4GB vào storm-cluster1:

./storm-cluster-linode.sh add-nodes storm-cluster1 api_env_linode.conf "2GB:1 4GB:2"

Cú pháp này có thể được sử dụng để thêm số lượng nút khác nhau tùy ý vào cụm hiện có.

Mô tả một cụm bão

Người dùng có clustermgrthẩm quyền có thể sử dụng describelệnh để mô tả cụm Storm:

./storm-cluster-linode.sh describe storm-cluster1

Người dùng chỉ có clustermgrguestquyền có thể sử dụng cluster_info.shđể mô tả cụm Storm bằng cách sử dụng listđể lấy danh sách tên của tất cả các cụm và lệnh infođể mô tả cụm đã cho. Khi sử dụng infolệnh, bạn cũng phải chỉ định tên cụm:

./cluster_info.sh list
./cluster_info.sh info storm-cluster1

Ngăn chặn một cụm bão

Việc dừng cụm Storm sẽ dừng mọi cấu trúc đang thực thi trên cụm đó, dừng Storm daemon trên mọi nút và tắt mọi nút. Cụm có thể được khởi động lại sau. Lưu ý rằng các nút vẫn sẽ phải chịu phí theo giờ ngay cả khi đã dừng.

Để dừng cụm Storm, hãy sử dụng stoplệnh:

./storm-cluster-linode.sh stop storm-cluster1 api_env_linode.conf

Phá hủy một cụm bão

Việc phá hủy một cụm Storm sẽ xóa vĩnh viễn tất cả các nút của cụm đó và dữ liệu của chúng . Chúng sẽ không còn phải chịu phí theo giờ nữa.

Để phá hủy cụm Storm, hãy sử dụng destroylệnh:

./storm-cluster-linode.sh destroy storm-cluster1 api_env_linode.conf

Chạy lệnh trên tất cả các nút của cụm Storm

Bạn có thể chạy lệnh (ví dụ, để cài đặt gói hoặc tải xuống tài nguyên) trên tất cả các nút của cụm Storm. Điều này cũng hữu ích khi cập nhật và nâng cấp phần mềm hoặc thay đổi quyền tệp. Lưu ý rằng khi sử dụng phương pháp này, lệnh sẽ được thực thi như roottrên mỗi nút.

Để thực hiện lệnh trên tất cả các nút, hãy sử dụng lệnh run, chỉ định tên cụm và các lệnh sẽ chạy. Ví dụ: để cập nhật kho lưu trữ gói của bạn trên tất cả các nút trong storm-cluster1:

./storm-cluster-linode.sh run storm-cluster1 "apt-get update"

Sao chép các tập tin vào tất cả các nút của một cụm Storm

Bạn có thể sao chép một hoặc nhiều tệp từ nút quản lý cụm đến tất cả các nút của cụm Storm. Các tệp sẽ được sao chép dưới dạng người rootdùng trên mỗi nút, vì vậy hãy ghi nhớ điều này khi sao chép các tệp cần quyền cụ thể.

  1. Nếu các tệp chưa có trên nút quản lý cụm của bạn, trước tiên bạn cần sao chép chúng từ máy trạm của mình. Thay thế local-filecho tên hoặc đường dẫn của tệp trên máy cục bộ của bạn và PUBLIC-IP-OF-CLUSTER-MANAGER-LINODEcho địa chỉ IP của nút quản lý cụm. Bạn cũng có thể chỉ định một đường dẫn tệp khác và thay thế nó bằng ~:scp -i ~/.ssh/clustermgr local-files clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE:~
  2. Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE cd storm-linode
  3. Thực hiện cplệnh, chỉ định thư mục đích trên mỗi nút và danh sách các tệp cục bộ cần sao chép:./storm-cluster-linode.sh cp target-cluster-name "target-directory" "local-files" Hãy nhớ chỉ định thư mục đích trước danh sách các tệp nguồn (đây là lệnh ngược lại với lệnh thông thường cpscp.Ví dụ, nếu cấu trúc của bạn yêu cầu các tệp dữ liệu có tên “*.data” để xử lý, bạn có thể sao chép chúng vào rootthư mục gốc của người dùng trên tất cả các nút cụm bằng cách:./storm-cluster-linode.sh cp storm-cluster1 "~" "~/*.data"

Xóa hình ảnh cơn bão

Để xóa hình ảnh Storm, hãy sử dụng delete-imagelệnh:

./storm-cluster-linode.sh delete-image storm-image1 api_env_linode.conf

Lưu ý rằng lệnh này sẽ xóa hình ảnh nhưng không xóa bất kỳ cụm nào được tạo từ hình ảnh đó.

Hoạt động của cụm Zookeeper

Trong phần này, chúng tôi sẽ đề cập đến các hoạt động bổ sung để quản lý cụm Zookeeper của bạn sau khi cụm này đã hoạt động.

Tất cả các lệnh trong phần này phải được thực hiện từ storm-linodethư mục trên trình quản lý cụm Linode. Bạn sẽ cần clustermgrcác đặc quyền trừ khi được chỉ định khác.

Mô tả một cụm người trông coi sở thú

Người dùng có clustermgrthẩm quyền có thể sử dụng describelệnh để mô tả cụm Zookeeper:

./zookeepercluster-linode.sh describe zk-cluster1

Người dùng chỉ có clustermgrguestquyền có thể sử dụng cluster_info.shđể mô tả cụm Zookeeper bằng cách sử dụng listđể lấy danh sách tên của tất cả các cụm và lệnh infođể mô tả cụm đã cho. Khi sử dụng infolệnh, bạn phải chỉ định tên cụm:

./cluster_info.sh list
./cluster_info.sh info zk-cluster1

Ngăn chặn một cụm người trông coi sở thú

Việc dừng cụm Zookeeper sẽ dừng sạch sẽ trình nền Zookeeper trên tất cả các nút và tắt tất cả các nút. Cụm có thể được khởi động lại sau. Lưu ý rằng các nút vẫn sẽ phải chịu phí theo giờ của Linode khi dừng.Quan trọngKhông dừng cụm Zookeeper trong khi bất kỳ cụm Storm nào phụ thuộc vào nó đang chạy. Điều này có thể dẫn đến mất dữ liệu.

Để dừng một cụm, hãy sử dụng stoplệnh:

./zookeeper-cluster-linode.sh stop zk-cluster1 api_env_linode.conf

Phá hủy một cụm Zookeeper

Việc phá hủy một cụm Zookeeper sẽ xóa vĩnh viễn tất cả các nút của cụm đó và dữ liệu của chúng. Không giống như Linode chỉ bị tắt, bị phá hủy hoặc xóa, Linode không còn phải chịu phí theo giờ nữa.Quan trọngKhông được hủy cụm Zookeeper khi bất kỳ cụm Storm nào phụ thuộc vào nó đang chạy. Điều này có thể dẫn đến mất dữ liệu.

Để phá hủy một cụm, hãy sử dụng destroylệnh:

./zookeeper-cluster-linode.sh destroy zk-cluster1 api_env_linode.conf

Chạy lệnh trên tất cả các nút của cụm Zookeeper

Bạn có thể chạy lệnh trên tất cả các nút của cụm Zookeeper cùng một lúc. Điều này có thể hữu ích khi cập nhật và nâng cấp phần mềm, tải xuống tài nguyên hoặc thay đổi quyền trên các tệp mới. Lưu ý rằng khi sử dụng phương pháp này, lệnh sẽ được thực thi như roottrên mỗi nút.

Để thực hiện lệnh trên tất cả các nút, hãy sử dụng lệnh run, chỉ định tên cụm và các lệnh sẽ chạy. Ví dụ: để cập nhật kho lưu trữ gói của bạn trên tất cả các nút:

./zookeeper-cluster-linode.sh run zk-cluster1 "apt-get update"

Sao chép các tập tin vào tất cả các nút của một cụm Zookeeper

Bạn có thể sao chép một hoặc nhiều tệp từ nút quản lý cụm đến tất cả các nút của cụm Storm. Các tệp sẽ được sao chép dưới dạng người rootdùng trên mỗi nút, vì vậy hãy ghi nhớ điều này khi sao chép các tệp cần quyền cụ thể.

  1. Nếu các tệp chưa có trên nút quản lý cụm của bạn, trước tiên bạn cần sao chép chúng từ máy trạm của mình. Thay thế local-filecho tên hoặc đường dẫn của tệp trên máy cục bộ của bạn và cluster-manager-IPcho địa chỉ IP của nút quản lý cụm. Bạn cũng có thể chỉ định một đường dẫn tệp khác và thay thế nó bằng ~:scp -i ~/.ssh/clustermgr local-files clustermgr@cluster-manager-IP:~
  2. Đăng nhập vào Cluster Manager Linode với tên người dùng clustermgrvà điều hướng đến storm-linodethư mục:ssh -i ~/.ssh/clustermgr clustermgr@PUBLIC-IP-OF-CLUSTER-MANAGER-LINODE cd storm-linode
  3. Thực hiện cplệnh, chỉ định thư mục đích trên mỗi nút và danh sách các tệp cục bộ cần sao chép:./zookeeper-cluster-linode.sh cp target-cluster-name "target-directory" "local-files" Hãy nhớ chỉ định thư mục đích trước danh sách các tệp nguồn (đây là lệnh ngược lại với lệnh thông thường cpscp.Ví dụ, nếu cụm của bạn yêu cầu các tệp dữ liệu có tên “*.data” để xử lý, bạn có thể sao chép chúng vào rootthư mục gốc của người dùng trên tất cả các nút cụm bằng cách:./zookeeper-cluster-linode.sh cp zk-cluster1 "~" "~/*.data"

Xóa hình ảnh của người trông coi sở thú

Để xóa hình ảnh Zookeeper, hãy thực hiện delete-imagelệnh:

./zookeeper-cluster-linode.sh delete-image zk-image1 api_env_linode.conf

Lưu ý rằng lệnh này sẽ xóa hình ảnh nhưng không xóa bất kỳ cụm nào được tạo từ hình ảnh đó.

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.