1.スキーム
私たちが持っています:
- フロントエンドは、負荷(IP-1.2.3.4-外部、IP-192.168.5.10-内部DMZ)を受け入れて分散するためのNGINXプロキシサーバーであり、ファイアウォールの裏側に立つ必要がありますが、理解を容易にするための図を次に示します。
- ownCloudが発生した2つのサーバー
- cloud-1 IP-192.168.1.11
- クラウド-2 IP-192.168.1.12
- NFSアクセスでユーザーデータをホストするためのNFSストレージIPファイルストレージは192.168.1.20です。
2. ownCloudのインストール
実際には、リポジトリのマニュアルおよび数学に関するすべてのアクション。
Ubuntu 12.03 LTS-LAMPシステム(LAMPのインストール時にルートパスワードを忘れないでください)
LDAPを使用するには、php5-ldapを提供する必要があります
$sudo apt-get install php5-ldap
データストレージには、NFS経由でアクセスできる別のサーバーを使用します。
NFSストレージストレージサーバーで、nfsサーバーを設定します
$ sudo apt-get install nfs-kernel-server
次の行を追加して/ etc / exportsを編集します。
/var/owncloud 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
フォルダーを作成し、その権限を変更します。
$sudo mkdir -p /var/owncloud $sudo chown root:www-data /var/owncloud
NFSサーバーを再起動します。
$sudo /etc/init.d/nfs-kernel-server restart
保存が完了しました。
NFS クライアントサーバーでは、以下を設定します。
$ sudo apt-get istall nfs-common
終了0の前にvim /etc/rc.localを修正して、次の行を追加します:(ブート時にNFSフォルダーをマウントするには、/ etc / fstabを使用すると難しい問題が発生するため、このファイルに書き込みます)
/bin/mount -t nfs -o user,rw,hard 192.168.1.20:/var/owncloud /var/cloud
/ var / cloudフォルダーを作成し、そのアクセス許可を変更します。
$sudo mkdir -p /var/cloud
$sudo chown root:www-data /var/owncloud
マウントを確認するには
$sudo mount.nfs 192.168.1.20:/var/owncloud /var/cloud
次に、実際のクラウドを2つのサーバーに配置します。
キーをダウンロードしてインストールします。
$wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key $sudo apt-key add - < Release.key
リポジトリを追加し、クラウドを設定します。
$sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud.list" $sudo apt-get update $sudo apt-get install owncloud
行く
you_ip/owncloud
- 管理者「admin」を入力します
- パスワード「password」を作成します
- ユーザーファイルが保存されるパス/ var / cloud(ストレージからNFS経由でこのフォルダーに接続します)
- MySQLの選択
- MySQLユーザー「root」(または自分で始めたユーザー)
- ルートユーザーのパスワード(LAMPのインストール時または作成されたユーザーから入力された)
- データベース名「クラウド」
- ローカルホストデータベースサーバー
完了をクリックします
また、owncloud Webインターフェースでユーザーが作成した管理者の下に移動します。
クラウドログインページにリダイレクトするように/var/www/index.htmlを決定しました。
<html> <head> <meta HTTP-EQUIV="REFRESH" content="0; url=/owncloud/"> </head> </html>
これはすべて、CLOUD-1サーバーとCLOUD-2サーバーの両方で行います。
3. NGINXのインストールと構成
NGINXサーバー上
$sudo apt-get install nginx
リダイレクトサイトの構成ファイルを作成する
$ sudo vim /etc/nginx/sites-available/cloud
このような状態に支配します。
upstream myCloud { ip_hash; # server 192.168.1.11:80; server 192.168.1.12:80; } server { listen 1.2.3.4:443 ssl; # SSL server_name owncloud.site.org; ssl_certificate /etc/ssl/certs/site.pem; # ssl_certificate_key /etc/ssl/private/site.key; # client_max_body_size 200G; # location / { proxy_pass http://myCloud; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
リンクを作成する
$sudo ln -s /etc/nginx/sites-available/owncloud.site.org /etc/nginx/sites-enabled/owncloud.site.org
デフォルトページを編集し、すべてのリクエストをSSLにリダイレクトします。
$sudo vim /usr/share/nginx/www/index.html
<html> <head> <meta HTTP-EQUIV="REFRESH" content="0; url=https://owncloud.site.org/cloud/"> </head> </html>
nginxをスキップする
$sudo /etc/init.d/nginx restart
今のすべてのリクエストで
owncloud.site.org
owncloud.site.org
リダイレクトされます
owncloud.site.org/cloud
SSLセッションは、クライアントとNGINXの間、通常のNGINXとクラウドサーバーの間、通常のHTTPで確立されます。
この段階では、に行くことができます
owncloud.site.org
owncloud.site.org
cloud1(2)サーバーのユーザー名とパスワードを入力するように求められます。
すべての設定の後、クラスターが取得されますが、
ユーザーがプロファイルを構成し、cloud-1サーバー上のアプリケーションでアクションを実行すると、このデータはすべてMySQL-server cloud-1データベースに保存されます。 次回ログインすると、アクションや設定がない別のクラウド2クラスターサーバーに移動します。
これを修正するには、cloud-1とcloud-2の間でMySQLデータベースの同期が必要です。 さらに、MySQLレプリケーションの標準構成はマスター-スレーブ、つまり マスターへの変更はスレーブに複製されますが、その逆は複製されません。 マスター-マスターの2つのピアサーバーが必要です。
オプション:別のデータベースサーバー上の1つのMySQLデータベースで動作するように2つ以上のクラウドを構成することは可能ですが、この場合、MySQLデータベース専用の別のサーバーを保持する必要があり、スキームを多少複雑にし、別のクラウドを導入する場合、データベースのバックアップを作成する必要がありますインストール後の復元(データを上書きしないようにするため)。 どちらに行くかはあなたの選択です。
4.マスターの構成-マスターMySQLレプリケーション
cloud1で
# vim /etc/mysql/my.cnf
行を追加
[mysqld] #Replication log-bin=mysql-bin binlog_format=mixed server-id = 1 /* */ slave-compressed = 1 binlog-do-db = cloud /* */ #bind-address = 127.0.0.1 /* */
cloud2で
# vim /etc/mysql/my.cnf
行を追加
[mysqld] #Replication log-bin=mysql-bin binlog_format=mixed server-id = 2 /* */ slave-compressed = 1 binlog-do-db = cloud /* */ #bind-address = 127.0.0.1 /* */
ユーザーに両方のサーバーで複製させる。
cloud1で
IP 192.168.1.11およびパスワードu_passでアクセスするユーザーrepl2(クラウドベースに対する権限と特権SELECT、RELOAD、SUPER、REPLICATION SLAVEが必要)
mysql> grant replication slave on *.* to 'repl2'@192.168.1.12 identified by 'u_pass';
cloud2で
IP 192.168.1.12およびパスワードu_passでアクセスするユーザーrepl1(クラウドベースに対する権限と特権SELECT、RELOAD、SUPER、REPLICATION SLAVEが必要)
mysql> grant replication slave on *.* to 'repl2'@192.168.1.11 identified by 'u_pass';
次に、両方のベースを同一の状態にします。
cloud1で
mysql> FLUSH TABLES WITH READ LOCK; mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000009 | 107 | cloud | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
クラウドベースダンプを作成する
#mysqldump -u root -p cloud > /home/user/cloud.sql mysql> UNLOCK TABLES;
クラウド2にコピー
$scp /home/user/cloud.sql user@192.168.1.12:/home/user/cloud.sql
cloud2で
次に、スレーブを構成します。
mysql> USE cloud; mysql> SOURCE /home/user/cloud.sql mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000009'; mysql> CHANGE MASTER TO MASTER_LOG_POS=107; mysql> stop slave; mysql> CHANGE MASTER TO MASTER_HOST='192.168.5.11', MASTER_USER='repl2', MASTER_PASSWORD='u_pass';
注
(ここで、この「CHANGE MASTER TO MASTER_HOST = '192.168.5.11'、MASTER_USER = 'repl2'、MASTER_PASSWORD = 'u_pass';」に注意する必要があります。」データは以前にMySQLファイル/etc/mysql/my.cnfに書き込まれていました。
マスターホスト= 192.168.1.11
マスターユーザー= repl2
master-password = <パスワード>
MySQLコンソールの別のコマンドに移動されました)
マスターホスト= 192.168.1.11
マスターユーザー= repl2
master-password = <パスワード>
MySQLコンソールの別のコマンドに移動されました)
mysql> start slave; mysql> show slave status/G;
次のようなものが必要です。
カモメ
***************************** 1.行******************** *******
Slave_IO_State:マスターがイベントを送信するのを待っています
マスターホスト:192.168.1.11
Master_User:repl2
Master_Port:3306
Connect_Retry:60
Master_Log_File:mysql-bin.000014
Read_Master_Log_Pos:107
Relay_Log_File:mysqld-relay-bin.000017
Relay_Log_Pos:210
Relay_Master_Log_File:mysql-bin.000014
Slave_IO_Running:はい
Slave_SQL_Running:はい
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Skip_Counter:0
Exec_Master_Log_Pos:107
Relay_Log_Space:513
until_Condition:なし
until_Log_File:
until_Log_Pos:0
Master_SSL_Allowed:いいえ
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
Master_SSL_Verify_Server_Cert:いいえ
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:2
セット内の1行(0.00秒)
Slave_IO_State:マスターがイベントを送信するのを待っています
マスターホスト:192.168.1.11
Master_User:repl2
Master_Port:3306
Connect_Retry:60
Master_Log_File:mysql-bin.000014
Read_Master_Log_Pos:107
Relay_Log_File:mysqld-relay-bin.000017
Relay_Log_Pos:210
Relay_Master_Log_File:mysql-bin.000014
Slave_IO_Running:はい
Slave_SQL_Running:はい
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Skip_Counter:0
Exec_Master_Log_Pos:107
Relay_Log_Space:513
until_Condition:なし
until_Log_File:
until_Log_Pos:0
Master_SSL_Allowed:いいえ
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
Master_SSL_Verify_Server_Cert:いいえ
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:2
セット内の1行(0.00秒)
cloud1で
現在はベースが同じであるため、ダンプおよび復元する必要はありません。
cloud-1をcloud-2のスレーブとして設定する必要があります
mysql> USE cloud; mysql> stop slave; mysql> CHANGE MASTER TO MASTER_HOST='192.168.5.12', MASTER_USER='repl1', MASTER_PASSWORD='u_pass'; mysql> start slave; mysql> show slave status/G;
出力はcloud-2のようになるはずです
パラメーター...は、cloud-1およびcloud-2でYESでなければなりません。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
この段階で小さな問題があります。ローカルユーザーとしてcloud-1サーバーにログインでき、cloud-2はパスワードが間違っていると言います(またはその逆)。(理由はSALTです:)
変数がある/var/www/owncloud/config/config.phpファイルがあります
'passwordsalt' => '6d84a4d8cb3cf5439c05647ceb45682a',
クラウドサーバーごとに異なる値が設定されます。 移動できるサーバーからこの値をコピーして、不可能な場所に貼り付ける必要があります。
確認するには、同じユーザーの192.168.1.11と192.168.1.12に移動し、カレンダーのクラウド1サーバーでイベントを作成し、クラウド2で自動的に表示されるはずです(F5)。
出力には次のものがあります。
- ダイナミックロードバランシング用のNGINXフロントエンド
- バックエンドにあるいくつかのサーバーは、ユーザーの流入の戻り速度を向上させます
5.顧客
- Linux、Windows、およびMacOCの場合-無料(マイナス-同期用に複数の異なるフォルダーを指定することはできません)
- AndroidおよびiPhon / iPadの場合-0.99ドル
ここに少しあります:)
6.参照
www.opennet.ru/tips/info/1205.shtml
www.mysql.ru/docs/man/Replication_HOWTO.html
habrahabr.ru/post/86496
google.com