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;
リンクを作成する
$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で
行を追加
[mysqld]
cloud2で
行を追加
[mysqld]
ユーザーに両方のサーバーで複製させる。
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)
クラウドベースダンプを作成する
クラウド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コンソールの別のコマンドに移動されました)
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秒)
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.shtmlwww.mysql.ru/docs/man/Replication_HOWTO.htmlhabrahabr.ru/post/86496google.com