Cách thiết lập Mirror Director với MirrorBrain trên Ubuntu 14.04
Sao chép là một cách mở rộng quy mô trang web download , vì vậy tải download có thể được trải rộng trên nhiều server ở nhiều nơi trên thế giới. Mirrors lưu trữ các bản sao của file và được quản lý bởi giám đốc nhân bản. Gương giám đốc là trung tâm của bất kỳ hệ thống gương nào. Nó chịu trách nhiệm hướng lưu lượng truy cập đến máy nhân bản phù hợp nhất để user có thể download nhanh hơn.Phản chiếu là một hệ thống độc đáo với những ưu và nhược điểm riêng. Không giống như hệ thống dựa trên DNS, sao chép linh hoạt hơn nhiều. Không cần đợi DNS hoặc thậm chí tin tưởng vào server phản chiếu (trình giám đốc nhân bản có thể quét nhân bản để kiểm tra tính hợp lệ và đầy đủ của nó). Đây là một trong những lý do tại sao nhiều dự án nguồn mở sử dụng máy nhân bản để khai thác sự hào phóng của các ISP và chủ sở hữu server để download các server của chính dự án nguồn mở để download .
Thật không may, hệ thống phản chiếu sẽ làm tăng chi phí của bất kỳ yêu cầu HTTP nào, vì yêu cầu phải được chuyển đến trình giám đốc nhân bản trước khi được chuyển hướng đến file thực. Do đó, phản chiếu thường được sử dụng để lưu trữ download (một file lớn), nhưng không được khuyến khích cho các trang web (nhiều file nhỏ).
Hướng dẫn này sẽ chỉ ra cách cài đặt một version MirrorBrain (một trình giám đốc nhân bản phổ biến, giàu tính năng) và một server rsync (rsync cho phép nhân bản đồng bộ file với giám đốc) trên một server . Sau đó, ta sẽ cài đặt một máy nhân bản trên một server khác.
Cần thiết:
- Hai server Ubuntu 14.04 ở các vùng khác nhau; một đạo diễn và ít nhất một tấm gương.
Bước một - Cài đặt Apache
Đầu tiên ta cần biên dịch và cài đặt MirrorBrain. Toàn bộ phần đầu tiên của hướng dẫn này sẽ được thực hiện trên server mirror director . Ta sẽ cho bạn biết khi nào cần chuyển sang gương.
Thực hiện các bước này với quyền root . Nếu cần, hãy sử dụng sudo để truy cập shell root :
sudo -i
MirrorBrain là một module Apache lớn, vì vậy ta cần sử dụng Apache để phục vụ các file của bạn . Trước tiên hãy cài đặt Apache và các module ta yêu cầu:
apt-get install apache2 libapache2-mod-geoip libgeoip-dev apache2-dev
GeoIP là địa chỉ IP đến dịch vụ định vị và sẽ hỗ trợ khả năng chuyển hướng user của MirrorBrain đến vị trí download tốt nhất. Ta cần thay đổi file cấu hình của GeoIP để làm cho nó hoạt động với MirrorBrain. Đầu tiên hãy mở file cấu hình:
nano /etc/apache2/mods-available/geoip.conf
Sửa đổi nó để trông giống như sau. Thêm dòng GeoIPOutput Env và bỏ comment GeoIPDBFile và thêm cài đặt MMapCache :
<IfModule mod_geoip.c> GeoIPEnable On GeoIPOutput Env GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MMapCache </IfModule>
Đóng và lưu file ( Ctrl-x , rồi đến y , rồi Enter ).
Liên kết database GeoIP với nơi MirrorBrain mong đợi sẽ tìm thấy nó:
ln -s /usr/share/GeoIP /var/lib/GeoIP
Tiếp theo, hãy kích hoạt các module mà ta vừa cài đặt và cấu hình:
a2enmod dbd a2enmod geoip
Mô-đun địa lý có thể đã được bật; Tốt rồi.
Bước hai - Cài đặt và biên dịch MirrorBrain
Bây giờ ta cần biên dịch module MirrorBrain. Trước tiên hãy cài đặt một số phụ thuộc:
apt-get install python-pip python-dev libdbd-pg-perl python-SQLObject python-FormEncode python-psycopg2 libaprutil1-dbd-pgsql pip install cmdln
Sử dụng Perl để cài đặt thêm một số phụ thuộc.
perl -MCPAN -e 'install Bundle::LWP'
Chú ý đến các câu hỏi được hỏi ở đây. Bạn có thể nhấn Enter hoặc nói y để chấp nhận các giá trị mặc định.
Bạn sẽ thấy khá nhiều kết quả , kết thúc bằng dòng:
/usr/bin/make install -- OK
Nếu bạn nhận được cảnh báo hoặc lỗi, bạn có thể cần chạy lại cấu hình bằng cách thực hiện lại lệnh perl -MCPAN -e 'install Bundle :: LWP' .
Cài đặt phần phụ thuộc cuối cùng.
perl -MCPAN -e 'install Config::IniFiles'
Bây giờ ta có thể download và extract nguồn MirrorBrain:
wget http://mirrorbrain.org/files/releases/mirrorbrain-2.18.1.tar.gz tar -xzvf mirrorbrain-2.18.1.tar.gz
Tiếp theo, ta cần thêm nguồn module biểu mẫu vào MirrorBrain:
cd mirrorbrain-2.18.1/mod_mirrorbrain/ wget http://apache.webthing.com/svn/apache/forms/mod_form.h wget http://apache.webthing.com/svn/apache/forms/mod_form.c
Bây giờ ta có thể biên dịch và kích hoạt MirrorBrain và các module hình thành:
apxs -cia -lm mod_form.c apxs -cia -lm mod_mirrorbrain.c
Và sau đó là module MirrorBrain autoindex:
cd ~/mirrorbrain-2.18.1/mod_autoindex_mb apxs -cia mod_autoindex_mb.c
Hãy biên dịch các trình trợ giúp MirrorBrain GeoIP:
cd ~/mirrorbrain-2.18.1/tools gcc -Wall -o geoiplookup_city geoiplookup_city.c -lGeoIP gcc -Wall -o geoiplookup_continent geoiplookup_continent.c -lGeoIP
Sao chép trình trợ giúp vào folder lệnh:
cp geoiplookup_city /usr/bin/geoiplookup_city cp geoiplookup_continent /usr/bin/geoiplookup_continent
Cài đặt các công cụ nội bộ khác:
install -m 755 ~/mirrorbrain-2.18.1/tools/geoip-lite-update /usr/bin/geoip-lite-update install -m 755 ~/mirrorbrain-2.18.1/tools/null-rsync /usr/bin/null-rsync install -m 755 ~/mirrorbrain-2.18.1/tools/scanner.pl /usr/bin/scanner install -m 755 ~/mirrorbrain-2.18.1/mirrorprobe/mirrorprobe.py /usr/bin/mirrorprobe
Sau đó, thêm file log cho mirrorprobe (mirrorprobe kiểm tra xem các mirror có trực tuyến không):
mkdir /var/log/mirrorbrain touch /var/log/mirrorbrain/mirrorprobe.log
Bây giờ, ta có thể cài đặt công cụ quản lý dòng lệnh MirrorBrain:
cd ~/mirrorbrain-2.18.1/mb python setup.py install
Bước 3 - Cài đặt PostgreSQL
MirrorBrain sử dụng PostgreSQL, dễ cài đặt trên Ubuntu. Đầu tiên, hãy cài đặt PostgreSQL:
apt-get install postgresql postgresql-contrib
Bây giờ ta hãy đi vào shell quản trị PostgreSQL:
sudo -i -u postgres
Hãy tạo một user database MirrorBrain. Tạo password cho user này và ghi lại password vì bạn cần password sau:
createuser -P mirrorbrain
Sau đó, cài đặt database cho MirrorBrain:
createdb -O mirrorbrain mirrorbrain createlang plpgsql mirrorbrain
Nếu bạn nhận được thông báo rằng ngôn ngữ đã được cài đặt, điều đó tốt:
createlang: language "plpgsql" is already installed in database "mirrorbrain"
Ta cần cho phép xác thực password cho database từ máy local (điều này được yêu cầu bởi MirrorBrain). Đầu tiên hãy mở file cấu hình:
nano /etc/postgresql/9.3/main/pg_hba.conf
Sau đó xác định vị trí dòng 90 (nó phải là dòng thứ hai giống như thế này):
# "local" is for Unix domain socket connections only local all all peer
Cập nhật nó để sử dụng xác thực password dựa trên md5:
local all all md5
Lưu các thay đổi và khởi động lại PostgreSQL:
service postgresql restart
Bây giờ hãy thoát khỏi shell PostgreSQL ( Ctrl-D ).
Tiếp theo, hoàn tất cài đặt database bằng lệnh schemas database của MirrorBrain:
cd ~/mirrorbrain-2.18.1 psql -U mirrorbrain -f sql/schema-postgresql.sql mirrorbrain
Khi được yêu cầu , hãy nhập password mà ta đã đặt trước đó cho user database mirrorbrain .
Đầu ra sẽ như thế này:
BEGIN CREATE TABLE CREATE TABLE CREATE TABLE CREATE VIEW CREATE TABLE CREATE INDEX CREATE TABLE CREATE TABLE CREATE TABLE CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION COMMIT
Thêm dữ liệu ban đầu:
psql -U mirrorbrain -f sql/initialdata-postgresql.sql mirrorbrain
Sản lượng mong đợi:
INSERT 0 1 INSERT 0 6 INSERT 0 246
Đến đây bạn đã cài đặt MirrorBrain và cài đặt database !
Bước 4 - Xuất bản Mirror
Bây giờ thêm một số file vào máy nhân bản. Ta khuyên bạn nên đặt tên folder download theo domain của bạn. Hãy tạo một folder để phân phát các file này (vẫn ở dạng root ):
mkdir /var/www/download.example.org
Nhập folder đó:
cd /var/www/download.example.org
Bây giờ ta cần thêm một số file . Nếu bạn đã có các file trên server của bạn , bạn cần cp hoặc mv chúng vào folder này:
cp /var/www/example.org/downloads/* /var/www/download.example.org
Nếu họ ở trên một server khác, bạn có thể sử dụng scp ( server giám đốc nhân bản cần quyền truy cập SSH vào server khác):
scp root@other.server.example.org:/var/www/example.org/downloads/* download.example.org
Bạn cũng có thể tải lên các file mới như các file nào khác; ví dụ: bằng cách sử dụng SSHFS hoặc SFTP .
Để thử nghiệm, bạn có thể thêm ba file mẫu:
cd /var/www/download.example.org touch apples.txt bananas.txt carrots.txt
Tiếp theo, ta cần cài đặt rsync. rsync là một công cụ UNIX cho phép ta đồng bộ hóa file giữa các server . Ta sẽ sử dụng nó để giữ cho gương của ta đồng bộ với gương giám đốc. Rsync có thể hoạt động qua SSH hoặc URL rsync://
công khai. Ta sẽ cài đặt trình rsync (tùy chọn rsync: // URL). Trước tiên, ta cần tạo một file cấu hình:
nano /etc/rsyncd.conf
Hãy thêm cấu hình này. Đường dẫn phải là folder download của bạn và comment có thể là bất cứ điều gì bạn muốn:
[main] path = /var/www/download.example.org comment = My Mirror Director with Very Fast Download Speed! read only = true list = yes
Lưu các file . Khởi động daemon rsync:
rsync --daemon --config=/etc/rsyncd.conf
Bây giờ ta có thể kiểm tra bằng cách chạy phần sau trên hệ thống * NIX. Bạn có thể sử dụng domain phân giải tới server của bạn hoặc địa chỉ IP của server :
rsync rsync://server.example.org/main
Bạn sẽ thấy danh sách các file của bạn .
Bước 5 - Bật MirrorBrain
Bây giờ ta đã có các file của bạn , ta có thể kích hoạt MirrorBrain. Trước tiên, ta cần một user MirrorBrain và group :
groupadd -r mirrorbrain useradd -r -g mirrorbrain -s /bin/bash -c "MirrorBrain user" -d /home/mirrorbrain mirrorbrain
Bây giờ, hãy tạo file cấu hình MirrorBrain sẽ cho phép công cụ quản lý MirrorBrain kết nối với database :
nano /etc/mirrorbrain.conf
Sau đó, thêm cấu hình này. Hầu hết các cài đặt này là để cài đặt kết nối database . Đảm bảo thêm password của user database mirrorbrain cho cài đặt dbpass :
[general] instances = main [main] dbuser = mirrorbrain dbpass = password dbdriver = postgresql dbhost = 127.0.0.1 dbname = mirrorbrain [mirrorprobe]
Lưu các file . Bây giờ, hãy cài đặt file Apache VirtualHost của ta cho MirrorBrain:
nano /etc/apache2/sites-available/download.example.org.conf
Sau đó thêm cấu hình VirtualHost này. Bạn cần sửa đổi tất cả các vị trí nơi download.example.org được sử dụng để có domain hoặc địa chỉ IP riêng phân giải tới server của bạn. Bạn cũng nên cài đặt địa chỉ email của riêng mình cho cài đặt ServerAdmin . Đảm bảo rằng bạn sử dụng password của user database mirrorbrain trên dòng DBDParams :
<VirtualHost *:80> ServerName download.example.org ServerAdmin webmaster@example.org DocumentRoot /var/www/download.example.org ErrorLog /var/log/apache2/download.example.org/error.log CustomLog /var/log/apache2/download.example.org/access.log combined DBDriver pgsql DBDParams "host=localhost user=mirrorbrain password=database password dbname=mirrorbrain connect_timeout=15" <Directory /var/www/download.example.org> MirrorBrainEngine On MirrorBrainDebug Off FormGET On MirrorBrainHandleHEADRequestLocally Off MirrorBrainMinSize 2048 MirrorBrainExcludeMimeType application/pgp-keys Options FollowSymLinks Indexes AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>
Bạn nên xem xét một số tùy chọn MirrorBrain có sẵn trong thẻ Thư mục:
Tên | Sử dụng |
---|---|
MirrorBrainMinSize | Đặt file có kích thước tối thiểu (tính bằng byte) được chuyển hướng đến máy nhân bản để download . Điều này ngăn MirrorBrain chuyển hướng mọi người download các file thực sự nhỏ, trong đó thời gian chạy tra cứu database , GeoIP, v.v. lâu hơn là chỉ phân phát file . |
MirrorBrainExcludeMimeType | Đặt loại kịch câm nào không được phân phát từ gương. Cân nhắc bật tính năng này cho các file chính hoặc tương tự; các file nhỏ phải được phân phối chính xác 100%. Sử dụng tùy chọn này nhiều lần trong file cấu hình của bạn để bật tùy chọn này cho nhiều loại kịch câm. |
MirrorBrainExcludeUserAgent | Tùy chọn này dừng chuyển hướng cho một tác nhân user nhất định. Một số ứng dụng client (ví dụ: curl) yêu cầu cấu hình đặc biệt để hoạt động với các chuyển hướng và có thể dễ dàng hơn nếu chỉ phân phát file trực tiếp cho những user đó. Bạn có thể sử dụng các ký tự đại diện (ví dụ: *Chrome/* sẽ tắt chuyển hướng cho bất kỳ user Chrome nào). |
Danh sách đầy đủ các tùy chọn cấu hình có thể được tìm thấy trên trang web MirrorBrain .
Nếu bạn muốn biết thêm thông tin về cài đặt Apache VirtualHost cơ bản, vui lòng xem hướng dẫn này .
Lưu và thoát khỏi file .
Đảm bảo rằng folder log của bạn tồn tại:
mkdir /var/log/apache2/download.example.org/
Tạo liên kết đến file cấu hình trong folder các trang web đã bật:
ln -s /etc/apache2/sites-available/download.example.org.conf /etc/apache2/sites-enabled/download.example.org.conf
Bây giờ khởi động lại Apache:
service apache2 restart
Xin chúc mừng, bạn hiện đã cài đặt và chạy MirrorBrain!
Để kiểm tra xem MirrorBrain có hoạt động hay không, trước tiên hãy truy cập trang web download của bạn trong trình duyệt web để xem index file . Sau đó nhấp vào một trong các file để xem nó. Nối “.mirrorlist” vào cuối URL. (URL mẫu: http://download.example.org/apples.txt.mirrorlist .) Nếu tất cả đều hoạt động, bạn sẽ thấy một trang như sau:
Cấu hình công việc Cron
Trước khi có thể bắt đầu thêm gương, ta vẫn cần cài đặt một số công việc cron quét và bảo trì gương. Đầu tiên, hãy cài đặt MirrorBrain để kiểm tra những máy nhân bản nào đang trực tuyến (sử dụng lệnh mirrorprobe) mỗi phút:
echo "* * * * * mirrorbrain mirrorprobe" | crontab
Và một công việc cron để quét nội dung của máy nhân bản (để biết tính khả dụng và tính chính xác của file ) mỗi giờ:
echo "0 * * * * mirrorbrain mb scan --quiet --jobs 4 --all" | crontab
Nếu bạn có nội dung thay đổi rất nhanh, sẽ là khôn ngoan nếu bạn quét thêm thường xuyên, ví dụ: 0,30 * * * *
cứ sau nửa giờ. Nếu bạn có một server rất mạnh, bạn có thể tăng số lượng --jobs
để quét nhiều máy nhân bản cùng một lúc.
Dọn dẹp database vào lúc 1h30 sáng thứ Hai:
echo "30 1 * * mon mirrorbrain mb db vacuum" | crontab
Và cập nhật dữ liệu GeoIP vào khoảng 2:30 sáng thứ Hai (tuyên bố ngủ là để giảm mức tăng đột biến tải không cần thiết trên các server GeoIP):
echo "31 2 * * mon root sleep $(($RANDOM/1024)); /usr/bin/geoip-lite-update" | crontab
Bước 6 - Sao chép nội dung trên server khác
Bây giờ ta đã cài đặt một đạo diễn gương, hãy tạo gương đầu tiên của ta . Bạn có thể làm theo phần này cho mọi gương bạn muốn thêm.
Đối với phần này, hãy sử dụng một server Ubuntu 14.04 khác, tốt nhất là ở một khu vực khác.
Khi bạn đã đăng nhập (bằng quyền root hoặc sử dụng sudo -i ), hãy tạo một folder nội dung nhân bản:
mkdir -p /var/www/download.example.org
Sau đó sao chép nội dung vào folder đó bằng URL rsync mà ta đã cài đặt trước đó:
rsync -avzh rsync://download.example.org/main /var/www/download.example.org
Nếu bạn gặp sự cố với không gian (Lỗi IO) trong khi sử dụng rsync, có một cách để khắc phục. Bạn có thể thêm tùy chọn –exclude để loại trừ các folder không quan trọng đối với khách truy cập của bạn. MirrorBrain sẽ quét server của bạn và không đưa user đến các file bị loại trừ, thay vào đó gửi họ đến server gần nhất có file . Ví dụ: bạn có thể loại trừ các bộ phim cũ và các bài hát cũ:
rsync -avzh rsync://download.example.org/main /var/www/download.example.org --exclude "movies/old" --exclude "songs/old"
Sau đó, ta có thể đặt server nhân bản của bạn tự động đồng bộ hóa với server chính mỗi giờ bằng cách sử dụng cron (hãy nhớ bao gồm các tùy chọn --exclude
nếu bạn đã sử dụng bất kỳ):
echo '0 * * * * root rsync -avzh rsync://download.example.org/main /var/www/download.example.org' | crontab
Bây giờ ta cần xuất bản máy nhân bản của bạn qua HTTP (cho user ) và qua rsync (để quét MirrorBrain).
Apache
Nếu bạn đã có một server HTTP trên server của bạn , bạn nên thêm một VirtualHost (hoặc tương đương) để phân phát folder /var/www/ download.example.org
. Nếu không, hãy cài đặt Apache:
apt-get install apache2
Sau đó, hãy thêm file VirtualHost:
nano /etc/apache2/sites-available/london1.download.example.org.conf
Thêm các nội dung sau. Đảm bảo bạn đặt các giá trị của riêng mình cho các lệnh ServerName , ServerAdmin và DocumentRoot :
<VirtualHost *:80> ServerName london1.download.example.org ServerAdmin webmaster@example.org DocumentRoot /var/www/download.example.org </VirtualHost>
Lưu các file . Bật VirtualHost mới:
ln -s /etc/apache2/sites-available/london1.download.example.org.conf /etc/apache2/sites-enabled/london1.download.example.org.conf
Bây giờ khởi động lại Apache:
service apache2 restart
rsync
Tiếp theo, ta cần cài đặt daemon rsync (để quét MirrorBrain). Đầu tiên hãy mở file cấu hình:
nano /etc/rsyncd.conf
Sau đó thêm cấu hình, đảm bảo đường dẫn trùng với folder download của bạn. Comment có thể là bất cứ điều gì bạn muốn:
[main] path = /var/www/download.example.org comment = My Mirror Of Some Cool Files read only = true list = yes
Lưu file này.
Khởi động daemon rsync:
rsync --daemon --config=/etc/rsyncd.conf
Tạo tấm gương cho Giám đốc
Bây giờ, trở lại server MirrorBrain , ta cần thêm gương. Ta có thể sử dụng lệnh mb (dưới dạng root). Có khá nhiều biến trong lệnh này, ta sẽ giải thích bên dưới:
mb new london1.download.example.org -H http://london1.download.example.org -R rsync://london1.download.example.org/main --operator-name=Example --operator-url=example.org -a "Pat Admin" -e pat@example.org
- Thay thế london1.download.example.org bằng biệt hiệu cho máy nhân bản này. Nó không phải giải quyết
- -H nên giải quyết cho server của bạn; bạn có thể sử dụng domain hoặc địa chỉ IP
- -R sẽ phân giải đến server của bạn; bạn có thể sử dụng domain hoặc địa chỉ IP
- Cài đặt
--operator-name
,--operator-url
,-a
và-e
phải là thông tin liên hệ administrator bạn muốn mà bạn muốn xuất bản
Sau đó, hãy quét và kích hoạt nhân bản. Bạn cần sử dụng cùng một biệt hiệu mà bạn đã sử dụng trong lệnh new
:
mb scan --enable london1.download.example.org
Lưu ý: Nếu bạn gặp lỗi như Không thể định vị LWP / UserAgent.pm trong @INC, bạn nên quay lại phần Bước hai và chạy lại perl -MCPAN -e 'install Bundle::LWP'
.
Giả sử quá trình quét thành công (MirrorBrain có thể kết nối với server ), máy nhân bản sẽ được thêm vào database .
Thử nghiệm
Bây giờ, hãy thử chuyển đến version MirrorBrain trên server giám đốc (ví dụ: download.example.org - không phải london1.download.example.org). , nhấp vào một file và thêm “.mirrorlist” vào cuối URL. Đến đây bạn sẽ thấy gương mới được liệt kê trong phần gương có sẵn.
Bạn có thể thêm nhiều máy nhân bản hơn với server của riêng mình ở những nơi khác trên thế giới hoặc bạn có thể sử dụng mb mới để thêm một máy nhân bản mà người khác đang chạy cho bạn.
Tắt và bật lại Gương
Nếu bạn muốn tắt nhân bản, điều đó đơn giản như chạy:
mb disable london1.download.example.org
mb scan --enable london1.download.example.org
lại máy nhân bản bằng lệnh mb scan --enable london1.download.example.org
như đã sử dụng ở trên.
Các tin liên quan
Cách cấu hình một cụm Mesosphere sẵn sàng sản xuất trên Ubuntu 14.042014-09-25
Cách thiết lập DNSSEC trên server tên NSD trên Ubuntu 14.04
2014-09-25
Cách triển khai ứng dụng Meteor.js trên Ubuntu 14.04 với Nginx
2014-09-22
Cách cài đặt Drupal trên server Ubuntu 14.04 với Apache
2014-09-19
Cách sử dụng Reprepro cho Kho lưu trữ Gói Bảo mật trên Ubuntu 14.04
2014-09-10
Cách cài đặt Discourse trên Ubuntu 14.04
2014-09-10
Cách sử dụng Foreman để quản lý các node puppet trên Ubuntu 14.04
2014-09-08
Cách sử dụng phân phối giám sát mở với Check_MK trên Ubuntu 14.04
2014-09-08
Cách cài đặt và cấu hình một Daemon và Ứng dụng khách SNMP trên Ubuntu 14.04
2014-08-18
Giới thiệu về cách sử dụng Consul, Hệ thống khám phá dịch vụ, trên Ubuntu 14.04
2014-08-15