NGINXフロントエンドと複数のバックエンドサーバーを備えたOwnCloudコーポレートクラウド

1.スキーム



私たちが持っています:



画像



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







完了をクリックします

また、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コンソールの別のコマンドに移動されました)



 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.11192.168.1.12に移動し、カレンダーのクラウド1サーバーでイベントを作成し、クラウド2で自動的に表示されるはずです(F5)。

出力には次のものがあります。



5.顧客





ここに少しあります:)

6.参照



www.opennet.ru/tips/info/1205.shtml

www.mysql.ru/docs/man/Replication_HOWTO.html

habrahabr.ru/post/86496

google.com



All Articles