2011-01-31 27 views
6

Tôi biết rằng các nút có thể được bắt đầu từ trình bao. Những gì tôi đang tìm kiếm là một cách để bắt đầu một nút từ xa từ bên trong một mô-đun. Tôi đã tìm kiếm, nhưng đã không thể tìm thấy gì cả.Erlang: bắt đầu một nút từ xa lập trình

Mọi trợ giúp đều được đánh giá cao.

Trả lời

9

Cấp thấp hơn một chút so với hồ sơ là mô-đun slave(3). Pool xây dựng dựa trên chức năng trong slave.

Sử dụng slave:start để bắt đầu một nô lệ mới.

Bạn cũng có thể chỉ định -rsh ssh trên dòng lệnh.

Vì vậy, hãy sử dụng nhóm nếu bạn cần loại chức năng mà nó cung cấp, nếu bạn cần một thứ gì đó khác, bạn có thể tự xây dựng nó ra khỏi nô lệ.

11

Có một cơ sở pool(3):

hồ bơi có thể được sử dụng để chạy một tập hợp các nút Erlang như một vũng xử lý tính toán. Đó là được tổ chức với tư cách là người nắm giữ và tập hợp các nút nô lệ ..

pool:start/1,2 bắt đầu một hồ bơi mới. Tệp .hosts.erlang được đọc đến tìm tên máy chủ lưu trữ nơi các nút hồ bơi có thể được bắt đầu. Các nút nô lệ là bắt đầu bằng slave:start/2,3, truyền dọc theo Name và, nếu được cung cấp, Args. Name được sử dụng làm phần đầu tiên của tên nút, Args được sử dụng để xác định đối số dòng lệnh.

Với hồ bơi, bạn có cơ sở phân phối tải miễn phí.

nút Thuyền trưởng có quyền được bắt đầu theo cách này:

erl -sname poolmaster -rsh ssh 

chính -rsh đây xác định một thay thế cho rsh để khởi động một nút nô lệ trên một máy chủ từ xa. Chúng tôi đã sử dụng SSH ở đây. Đảm bảo rằng hộp của bạn có các khóa SSH hoạt động và bạn có thể xác thực với các máy chủ từ xa bằng các phím này.

Nếu không có máy chủ nào trong tệp .hosts.erlang, thì không có nút nô lệ nào được khởi động và bạn có thể sử dụng slave:start/2,3 để bắt đầu các nút nô lệ theo cách thủ công truyền đối số nếu cần.

Bạn có thể, ví dụ như bắt đầu một nút từ xa:

Arg = "-mnesia_dir " ++ M, 
slave:start(H, Name, Arg). 

Đảm bảo epmd(1) khởi động và chạy trên các hộp điều khiển từ xa để bắt đầu nút Erlang.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan