簡単なWebアプリケーションアーキテクチャの例

まず、アーキテクチャ図

../../_images/戦闘チャート.PNG 1
  • 負荷分散を実現するために、完全な分析はweb1、WEB2をDNS
  • web1、WEB2使用のMySQLデータベースバックエンド
  • web1と、すべてのNFSデータ上WEB2ページデータは、自動的にマウント
  • NFSサーバweb1とは、ウェブデータを提供WEB2
10.7.2。準備

設定したIP情報の

タイプイーサネットのifnameのens33 CON CON-名ens33は\マニュアルipv4.method追加nmcli 
192.158.46.150/24 ipv4.gateway 192.168.46.1 ipv4.address 

注意

nmcliは、私はもちろん、使用しているIP変更します人間修正。
10.7.3。Ansible設定
10.7.3.1。インストールansible 

[ルート@ localhostの〜]#yumをansibleインストール

10.7.3.2。ホストの追加

の/ etc / ansible / hostsファイルに以下を追加する必要性を。

[クライアント] 
192.168.46.159 

[DNS] 
192.168.46.158 

[ウェブ] 
192.168.46.157 
192.168.46.156 
[DB] 
192.168.46.155 
[NFS] 
192.168.46.154 
[セルフ] 
192.168.46.150 

10.7.3.3。で、パスワードなしのログの設定

ここで私の前に自動化、パスワードなしのログインスクリプトというスクリプトを書き、私のブログを参照してください。

[ルート@ localhostの〜]#猫HOSTS.TXT 
192.168.46.150ルートオラクル
192.168.46.151ルートオラクル
192.168.46.152ルートオラクル
192.168.46.153ルートオラクル
192.168.46.154ルートオラクル
192.168.46.155ルートオラクル
192.168.46.156ルートオラクル
192.168.46.157ルートオラクル
192.168.46.158ルートオラクル
192.168.46.159ルートオラクル
192.168.46.160ルートオラクル
[ルート@ localhostの〜]#猫mima.sh 
#!/ binに/ bashの
#================ ================================ 
#FileName:expect_ssh.sh 
#Author:zhaojiedi 
#Description:
#DateTime:2018- 01-05 8時26分06秒
#Version:V1.0 
#Other:
#================================================ 
host_username_password_file = HOSTS.TXTの

期待#インストール
&>を/ dev / null ||期待-q RPM yumをインストール-yqは&>は/ dev / nullに期待

#id_rsa.pubファイルを作成
pubkeyで=の〜/ .ssh / id_rsa.pub 
[場合!-e "$のpubkeyで"]; その後
        のssh-keygenは-P "" -t rsaの-fの〜/ .ssh / id_rsaと
Fiの
読み取りホストのユーザー名・パスワードしばらく; やる
        CON = $ {ユーザー名} "@" $ {ホスト}は
        $パスワードをエコー
        << EOFの期待
        20タイムアウトセット
        産卵のssh-コピー-ID $ CONは
        {期待する
                "はい/いいえ" {送信"はい\ n"は、exp_continue} 
                "パスワード:" {送信 "$ {パスワード} \ n" は、exp_continue}
 
#自動的に公衆スクリプト、コピージョブを実行し
ます。[root @ localhostの〜]#bashの mima.sh 

テスト#下の
[ルート@ localhostの〜]#のSSH 192.168.46.151 'ショーは、IP A ens33' 

10.7.3.4を。セットのホスト名前(オプション)

私のマシンはここに誤用を防ぐために、ホスト名ダウン管理セットを容易にするために、すべてのちょうどクローン作成された仮想マシンです。

#ホスト名を設定するスクリプトを作成し
ます。[root @ localhostの〜]#vimのset_hostname.sh 
[ルート@ localhostの〜]#猫set_hostname.shの
#!/ binに/ bashの
エコー"スタート" 
ホスト名の
Aには、show ip $( -名= CentOSのをens33 |はgrep 'ens33 INET *' |。-n -R&LTセッド'S @ * \([0-9] {1,3})/.*@ \ P @ 1 ..')linuxpanda.tech 
エコー$名前
hostnamectlセットホスト名$名
エコー"終了" 

[ルートのCentOS-localhostの@〜]#ansibleすべてのスクリプト-a -m '/root/set_hostname.sh' 

このスクリプトはまたansibleホストのIP設定されています。
。10.7.3.5ファイアウォールとSELinux近い

ファイアウォール閉じる# 
//聞く-ON-V6 {ポート53は:: 1;};
[CentOSのルート-150 @〜]#ansibleすべての-m -a-サービス'の名前は=有効= NO firewalld' 
[CentOSのルート-150 @〜]#ansibleすべての-m -a-サービス'=国家は= firewalld名前を停止' 

[ルートをCentOSの-150〜@]#ansibleすべてのシェル-a -m '-i -R&LTセッド' SELINUX = S @。@ * @ SELINUX =無効'の/ etc /のsysconfig / SELinuxの' 
[CentOSのルート-150 @〜]#ansible -m -aシェルすべて「setenforce 0」


オリジナルのSELinuxが無効になっている場合は、setenforce 0エラーを使用して報告されます、それを無視しないでください。
10.7.4。DNSホストの設定
10.7.4.1。DNS設定

[CentOSのルート-158 @〜]#yumをインストールバインドバインド-utilsの
[CentOSのルート-158 @〜] Vimの/etc/named.confの#
#注5行を次
/ / {リッスンポート53は127.0.0.1である;}; 
//有効DNSSEC -はい; 
//検証DNSSEC -はい。
クエリ{//;}; - localhostを許可 
                    IH;再試行
                    1W、有効期限が切れる
                    3H)を、最小
[CentOSのルート-158 @〜] Vimの/etc/named.rfc1912.zones# セミコロン(注)した後、以下の追加
ゾーン"linuxpanda.tech" {のIN 
        タイプマスター; 
        ファイル"linuxpanda.tech.zone"; 
}; 
[CentOSのルート-158 @〜]#CDと/ var / named / 
[名前のルート@ CentOSの-158] -a named.localhost linuxpanda.tech.zone CP番号
[CentOSの@ルートという名前-158]#Vimのlinuxpanda.tech.zone 
[CentOSの@ 158という名前のルート] linuxpanda.tech.zoneのCAT#
$ TTL 1D 
のNS1 @ SOA ADMIN IN(
                    0;シリアル
                    1D;更新
    NS NS1 
NS1 A 192.168.46.158 
ウェブA 192.168.46.157 
ウェブA 192.168.46.156 
CNAMEウェブWWW 

10.7.4.2。DNS本机测试

[ルート@ CentOSの-158という名前]#掘るwww.linuxpanda.tech @localhost 
<< >> DIG 9.9.4-のRedHat-9.9.4-51.el7_4.2 << >> www.linuxpanda.tech @localhost 
;; グローバルオプション:+ CMD 
;; 答えを得た:
;; - >> HEADER << -オペコード:QUERY、状態:NOERROR、ID:57957 
;; フラグ:QR単三番目のRA; QUERY:1、ANSWER:3、AUTHORITY:1、追加:2 

;; OPTシュード:
; EDNS:バージョン:0、フラグ:; UDP:4096 
;; QUESTION SECTION:
; www.linuxpanda.tech。Aでは

;; ANSWERセクション: 
www.linuxpanda.tech。CNAMEのweb.linuxpanda.tech、IN 86400。
web.linuxpanda.tech。192.168.46.156、IN 86400 
web.linuxpanda.tech。86400のA 192.168.46.157
 
;; AUTHORITY SECTION:
.. linuxpanda.tech NSがIN 86400をns1.linuxpanda.tech 

;;追加セクション:
。ns1.linuxpanda.techのA 192.168.46.158 86400 

;;問合せ時間:0ミリ秒
;; SERVER:#53は、127.0.0.1(127.0.0.1)です
;; WHEN:18日に2018年2月午後九時05分05秒CSTです
;; MSG RCVDサイズ:132 

。10.7.5クライアントホストテスト

#は、私たち自身のDNSホスト用のクライアントのDNSの点を変更し
、[ルート@ CentOSの-159〜]#修正ens33は192.168.46.158 ipv4.dns CON nmcli 
#は、ネットワーク、またはリロードを再起動して
[ CentOSの-159〜]#1 @ルートサービスネットワークの再起動

、それは2つのIP 157156を解決できるかどうかを確認するために#ピングでの当社のWebホスト 
のpingの[CentOSのルート-159 @〜]#www.linuxpanda.tech 
PING web.linuxpanda.tech(192.168.46.157)56(84)は、データのバイト。 
192.168.46.157(192.168.46.157)から64バイト:icmp_seq = 64 1 TTL =時間= 0.330 MS 
192.168.46.157から64バイト(192.168.46.157):icmp_seq TTL =時間2 64 = 0.255 MS = 
192.168.46.157(192.168.46.157)から64バイト:icmp_seq = 64 3 TTL =時間= 0.292 MS 

[CentOSのルート-159 @〜]ピング位www.linuxpanda.tech 
PINGのweb.linuxpanda .Tech(192.168.46.156)56(84)であるデータのバイト。
192.168.46.156から64バイト(192.168.46.156):icmp_seq = 64 1 TTL =時刻MS = 0.421 


専門外のビットをテストするためのpingコマンドは、複数を必要とします二つのアドレスへのテストは、すべてのクライアントの後、掘るツールがインストールされていない、表示されます。
10.7.6。NFSホストの設定
10.7.6.1。ユーザーの追加

[CentOSのルート-154 @〜]#48アパッチのgroupadd -g 
[CentOSのルート-154 @〜]#useraddの-u 48 -g 48アパッチ
#IDはアパッチ[CentOSの-154〜@ルート] 
UID = 48(アパッチ)GID = 48(アパッチ)基= 48(アパッチ)
 
10.7.6.2。パーミッションを変更

[ルート@ CentOSの-154〜]#のchown -R apache.apache /データ/ HTML 

10.7。 6.3。共享出去

[ルート@ CentOSの-154〜]#yumをインストールするのnfs-utilsの
[ルート@ CentOSの-154〜]#vimのは/ etc / exportsの
[ルート@ CentOSの-154〜]#猫の/ etc /エクスポート
/データ/ htmlの192.168。 46.156(RW、all_squashコマンド、anonuidコマンド=アパッチ、anongidコマンド=アパッチ)
/データ/ HTML 192.168.46.156(RW、all_squashコマンド、anonuidコマンド=アパッチ、anongidコマンド=アパッチ)
[ルートのCentOS-154 @〜]#systemctl再起動のnfsd 
のCentOS @ [ルート-154〜]#は、exportfs -v 
/データ/ HTML 192.168.46.156(RW、同期、wdelay、皮、no_subtree_checkコマンド、anonuidコマンド= 48、anongidコマンド= 48、秒= SYS、固定、にroot_squash、all_squashコマンド)
/データ/ HTML 192.168.46.157(RW、同期、wdelay、皮、no_subtree_checkコマンド、anonuidコマンド= 48、anongidコマンド= 48、秒= SYS、固定、にroot_squash、all_squashコマンド)

10.7.7。mysqlの配置主机
10.7.7.1。安装软件

[ルート@ CentOSの-155〜]#yumをインストールmariadb-サーバmariadb
 
10.7.7.2。開始はサービス

[ルートのCentOS-155 @〜]#はmariadb開始systemctl 
#netstatの-tunlp [CentOSの-155〜@ルート] | grepを3306 
TCP 0 0 0.0.0.0:3306 0.0.0.0:*は13680 / mysqldをLISTEN 

10.7.7.3を。添加应用用户

[ルート@ CentOSの-155〜]#mysqlの-uルートは-p 
パスワードを入力します。
MariaDBモニターへようこそ。コマンドは、で終わります。または\グラム。
あなたのMariaDBの接続IDが10である
5.5.56-MariaDB MariaDBサーバー:Serverバージョン

著作権(C)2000、2017、オラクル、MariaDB株式会社アブなどがあります。

「助けを;」タイプ 助けのためか、「\ H」。現在の入力文をクリアするために「\ C」を入力します。

MariaDB [(なし)]>データベースのウェブを作成します。
クエリOK、影響を受けた1行(0.00秒)
 
。MariaDB「オラクル'で識別される' web@'192.168.46.%ウェブすべてONに[(なし)]> *グラント、
影響を受けたクエリOK、0行(0.05秒)

10.7.7.4セキュリティの初期化。

[ルート@ 〜155-のCentOS]#mysql_secure_installation 

10.7.8。ウェブホストの設定

ここでは2つのホスト。
10.7.8.1。ソフトウェアのインストール

#マウント
[ルートのCentOS-150 @〜]#yumをansibleウェブ-m -a '=のhttpd名、PHP-FPM、PHP-MySQLの、mod_fcgid州立インストール済み=' サービス開始
[ルート@ centos- 150〜]#ansibleウェブ-mサービス -a '名= httpdの状態=開始' 
[ルート@ centos- 〜150]#ansible Webサービス-m -a '= PHP-FPM名= STARTED状態' 

10.7.8.2。カタログのマウント

マウント用の#は、必要なソフトウェアをインストールし
ます。[root @ CentOSのは-156 HTTPD] #yumをインストールnfs- CIFS-utilsのutilsの
#RPCサービスを開始
[ルートのCentOS-156 @ HTTPD]#systemctl再起動のrpcbind 
位のエクスポートされたリモート場合表示
[CentOSの-156のhttpd @ルート] #showmountは-e 192.168.46。
輸出のためのリスト192.168.46.154:
/データ/ HTML 192.168.46.157,192.168.46.156 
#マウント
[@ CentOSのルート-HTTPD 156]位マウント192.168.46.154:/data/htmlの/ var / WWW / HTML 
 
#自動的にマウントされ
、[@ CentOSのルート-HTTPD 156]#テールを。1 -nは/ etc / mtabを
192.168.46.154:/data/html / VAR / WWW / HTML NFS4 RW、がrelatime、VERS = 4.1、RSIZE = 65536、wsizeの値= 65536、namlen = 255、ハード、プロト= TCPポート= 0、ティメオ= 600、RETRANS = 2、秒= SYS、CLIENTADDR = 192.168.46.156、local_lock =なし、ADDR = 192.168.46.154 0
[ルート@ centos- HTTPD 156]尾-n 1つの#の/ etc / mtabに>>は/ etc / fstabの
#サンプル次のページを表示
[ルートのCentOS-156 @ HTTPD]#のCAT /var/www/html/index.html 
hellow世界を

10.7.8.3。 httpdの設定

このセクションでは、2台のマシンに再びそれを行うには持っている必要があります。

#PHPのページのサンプルをダウンロードし
ます。[root @ CentOSの-156 HTTPD] #wgetのdownload.linuxpanda.tech/lamp/index.php.sample -O /var/www/html/index.php 
#のサンプルPHPページエディタデータベース接続のユーザー名とパスワード
[ルート@ CentOSの-156 HTTPD]#vimの/var/www/html/index.php 
[ルート@ CentOSの-156 HTTPD]#猫の/var/www/html/index.php 
<?PHP 
$ mysqliの=新しいmysqliの( "192.168.46.155" 、 "ウェブ"、 "オラクル")。
IFは(mysqli_connect_errno()){ 
エコーは"失敗"; 
$ mysqliの= NULL; 
出口; 
} 
エコー"成功";  
$ mysqli- > 
?>
のFCGI編集
[ルート-156 @ CentOSのは、conf.d] Vimのfcgid.conf# 次の3行を追加します
index.phpをDirectoryIndexで
ProxyRequestsをオフ
ProxyPassMatch ^ /(.. * \ PHP)$ FCGI://127.0.0.1:9000の/ var / WWW / HTML / $ 1 
ネットワークサービス再起動する#
[ルート@ CentOSの-156 conf.d] #サービスを再起動httpdの

10.7.8.4。マシンのテスト

このセクションでは、二つのマシンに再びそれを行うために必要とされています。

[ルート@ CentOSの-156 conf.d] #カールはlocalhost / index.phpを
成功

10.7.9。クライアントのテスト

[ルート@ CentOSの-159〜] #カールhttp://www.linuxpanda.tech/index.php 
成功
停止ウェブの#156 
[ルート@ CentOSの-159〜] #カールhttp://www.linuxpanda.tech/index.php
成功した
#157その後、ウェブが停止し
、[ルートのCentOS-159 @〜]#http://www.linuxpanda.tech/index.phpカール
カール:接続www.linuxpanda.tech:80に失敗しました。接続(7)。拒否した

10.7.10を。まとめ

この作品を、それは非常に単純なようだが、それをやっては、まだいくつかのトラブルに遭遇しています。

改善のためのエリア:

    web1とが停止した場合にDNS解決不安定すぎる、、、これはホストを停止して解決することも可能DNSウェブはアクセスできませんつながります。
    後でマスターから学んだのMySQLの例は完璧に考慮することができます。
    ランプはXCacheとは、下の加速使用していない
    、この演習は、ランプ環境をインストールするにはyumを使用することですコンパイラのインストール方法を使用することを検討してください。
    NFS共有データは、本質的には、データのディスクでのnfsの代わりにrsyncの使用を検討してください。
    データファイルは、ファイルアクセス性能を提供するために、考慮の襲撃に配置することができます

 

おすすめ

転載: www.cnblogs.com/tanxiaojun/p/12151739.html