高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat

1. Nginxのインストールプロセス

1. Nginxインストールパッケージをダウンロードし、依存環境パッケージをインストールします。

(1)C++コンパイル環境をインストールする

yum -y gcc をインストール #C++

(2)PCREをインストールする

yum -y pcre-devel をインストールします

(3)zlibをインストールする

yum -y zlib-develをインストールします

(4)Nginxをインストールする

nginxの解凍ファイルの場所を見つけて、コンパイルとインストールのコマンドを実行します。

[root@localhost nginx-1.12.2]# パスワード
nginx-1.12.2 をローカルにインストールします。
[root@localhost nginx-1.12.2]# ./configure && make && make install

(5) Nginxを起動する

インストールが完了したら、まずインストールが完了したディレクトリの場所を見つけます。

[root@localhost nginx-1.12.2]# nginxはどこにあるか
nginx: /usr/local/nginx
[ルート@localhost nginx-1.12.2]#

Nginxサブディレクトリsbinに入り、Nginxを起動します。

[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx &
[1] 5768
[root@localhost sbin]#

Nginxが起動しているか確認する

または、プロセスを通じてNginxの起動ステータスを確認します

[root@localhost sbin]# ps -aux|grep nginx
root 5769 0.0 0.0 20484 608 ? Ss 14:03 0:00 nginx: マスタープロセス ./nginx
誰も 5770 0.0 0.0 23012 1620 ? S 14:03 0:00 nginx: ワーカープロセス
ルート 5796 0.0 0.0 112668 972 ポイント/0 R+ 14:07 0:00 grep --color=auto nginx
[1]+ ./nginx を完了しました
[root@localhost sbin]#

この時点で、Nginx は正常にインストールされ、起動されます。

(6) Nginxのクイックスタートとブート構成

Nginx クイック スタート スクリプトを編集します [ Nginx インストール パスに注意してください独自の NGINX パスに応じて変更する必要があります]

[root@localhost init.d]# vim /etc/rc.d/init.d/nginx
#!/bin/sh
#
# nginx - このスクリプトはnginxデーモンを起動および停止します
#
# chkconfig: -85 15
# 説明: Nginx は HTTP(S) サーバーであり、HTTP(S) リバースです \
# プロキシと IMAP/POP3 プロキシ サーバー
# プロセス名: nginx
# 設定: /etc/nginx/nginx.conf
# 設定: /usr/local/nginx/conf/nginx.conf
# pidファイル: /usr/local/nginx/logs/nginx.pid
 
# ソース関数ライブラリ。
. /etc/rc.d/init.d/functions
 
# ソースネットワーク構成。
. /etc/sysconfig/ネットワーク
 
# ネットワークが稼働していることを確認します。
[ "$NETWORKING" = "no" ] && 終了 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(ベース名 $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
ロックファイル=/var/lock/subsys/nginx
 
ディレクトリを作る() {
 # 必要なディレクトリを作成する
 user=`$nginx -V 2>&1 | grep "configure 引数:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
 if [ -z "`grep $user /etc/passwd`" ]; then
 ユーザー追加 -M -s /bin/nologin $user
 フィ
 options=`$nginx -V 2>&1 | grep 'configure 引数:'`
 オプトイン$options; を行う
 if [ `echo $opt | grep '.*-temp-path'` ]; then
 値=`echo $opt | cut -d "=" -f 2`
 if [ ! -d "$value" ]; then
 # echo "作成中" $value
 mkdir -p $value && chown -R $user $value
 フィ
 フィ
 終わり
}
 
始める() {
 [ -x $nginx ] || 終了 5
 [ -f $NGINX_CONF_FILE ] || 終了 6
 ディレクトリの作成
 echo -n $"$prog を開始しています: "
 デーモン $nginx -c $NGINX_CONF_FILE
 戻り値=$?
 エコー
 [ $retval -eq 0 ] && $lockfile をタッチ
 $retvalを返す
}
 
停止() {
 echo -n $"$prog を停止しています: "
 プロセスを終了する $prog -QUIT
 戻り値=$?
 エコー
 [ $retval -eq 0 ] && rm -f $lockfile
 $retvalを返す
}
 
再起動() {
 #configtest || $ を返しますか?
 停止
 睡眠1
 始める
}
 
リロード() {
 #configtest || $ を返しますか?
 echo -n $"$prog を再ロードしています: "
 nginx を killproc する -HUP
 RETVAL=$?
 エコー
}
 
強制リロード() {
 再起動
}
 
configtest() {
 $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
 ステータス $prog
}
 
rh_status_q() {
 rh_status >/dev/null 2>&1
}
 
ケース「$1」
始める)
rh_status_q && 終了 0
1ドル
;;
停止)
 
rh_status_q || 終了 0
1ドル
;;
再起動|構成テスト)
1ドル
;;
リロード
rh_status_q || 終了 7
1ドル
;;
強制リロード
強制リロード
;;
状態)
rh_ステータス
;;
condrestart|再起動を試みる)
rh_status_q || 終了 0
;;
*)
echo $"使用法: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
出口2
エサック

起動スクリプトを承認し、起動に追加します

[root@localhost init.d]# chmod -R 777 /etc/rc.d/init.d/nginx 
[root@localhost init.d]# chkconfig nginx

Nginxを起動する

[root@localhost init.d]# ./nginx を起動します

システム環境変数にNginxを追加する

[root@localhost init.d]# echo 'export PATH=$PATH:/usr/local/nginx/sbin' >>/etc/profile && source /etc/profile

Nginx コマンド [service nginx (start|stop|restart)]

[root@localhost init.d]# サービス nginx を開始
nginx を起動しています (systemctl 経由): [ OK ]

ヒント:クイックコマンド

サービス nginx (開始|停止|再起動)

2. KeepAlivedのインストールと設定

1. Keepalived依存環境をインストールする

yum インストール -y popt-devel  
yum インストール -y ipvsadm
yum インストール -y libnl*
yum インストール -y libnf*
yum インストール -y openssl-devel

2. Keepalivedをコンパイルしてインストールする

[root@localhost keepalived-1.3.9]# ./configure
[root@localhost keepalived-1.3.9]# 作成 && インストール

3. システムサービスとしてKeepaliveをインストールする

[root@localhost など]# mkdir /etc/keepalived
[root@localhost など]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

デフォルトの設定ファイルを手動でデフォルトのパスにコピーする

[root@localhost など]# mkdir /etc/keepalived
[root@localhost など]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost など]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

keepalived のソフトリンクを作成する

[root@localhost sysconfig]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

起動時にKeepalivedを自動的に起動するように設定する

[root@localhost sysconfig]# chkconfig keepalived オン
注: リクエストを 'systemctl enable keepalived.service' に転送します。
/etc/systemd/system/multi-user.target.wants/keepalived.service から /usr/lib/systemd/system/keepalived.service へのシンボリックリンクを作成しました

Keepalivedサービスを開始する

[root@localhost keepalived]# keepalived -D -f /etc/keepalived/keepalived.conf

Keepalivedサービスを停止する

[root@localhost keepalived]# killall keepalived

3. クラスターの計画と構築

環境準備:

セントOS7.2

Keepalived バージョン 1.4.0 - 2017 年 12 月 29 日

Nginx バージョン: nginx/1.12.2

Tomcat バージョン:8

クラスター計画チェックリスト

仮想マシンIP例示する
Keepalived+Nginx1[マスター] 192.168.43.101 Nginx サーバー 01
Keepalived+Nginx[バックアップ] 192.168.43.102 Nginx サーバー 02
トムキャット01 192.168.43.103 Tomcat Web サーバー01
トムキャット02 192.168.43.104 Tomcat Web サーバー02
上級192.168.43.150バーチャルドリフトIP

1. Tomcatのデフォルトのウェルカムページを変更してWebへの切り替えを識別します。

TomcatServer01 ノードの ROOT/index.jsp 情報を変更し、Tomcat IP アドレスを追加し、Nginx 値を追加します。つまり、ノード 192.168.43.103 情報を次のように変更します。

<div id="asf-box">
 <h1>${pageContext.servletContext.serverInfo}(192.168.224.103)<%=request.getHeader("X-NGINX")%></h1>
</div>

TomcatServer02 ノードの ROOT/index.jsp 情報を変更し、Tomcat IP アドレスを追加し、Nginx 値を追加します。つまり、ノード 192.168.43.104 情報を次のように変更します。

<div id="asf-box">
 <h1>${pageContext.servletContext.serverInfo}(192.168.224.104)<%=request.getHeader("X-NGINX")%></h1>
</div>

2. Tomcat サービスを起動し、Tomcat サービスの IP 情報を確認します。この時点では Nginx は起動されていないため、リクエスト ヘッダーには Nginx 情報が含まれません。

3. Nginxプロキシ情報を設定する

1. マスターノード[192.168.43.101]のプロキシ情報を設定する

アップストリームTomcat {
 サーバー 192.168.43.103:8080 重み=1;
 サーバー 192.168.43.104:8080 重み=1;
}
サーバ{
 位置 / {
  proxy_pass http://tomcat;
 proxy_set_header X-NGINX "NGINX-1";
 }
 #......その他省略}

2. バックアップノード[192.168.43.102]のプロキシ情報を構成する

アップストリームTomcat {
 サーバー 192.168.43.103:8080 重み=1;
 サーバー 192.168.43.104:8080 重み=1;
}
サーバ{
 位置 / {
  proxy_pass http://tomcat;
 proxy_set_header X-NGINX "NGINX-2";
 }
 #......その他省略}

3. マスターノードのNginxサービスを開始する

[root@localhost init.d]# サービス nginx を開始
nginx を起動しています (systemctl 経由): [ OK ]

このとき、192.168.43.101 にアクセスすると、Tcomat ノード 103 と 104 が交互に表示され、Nginx サービスが 2 つの tomcat にリクエストをロードしたことがわかります。

4. 同様に、バックアップ [192.168.43.102] Nginx 情報を設定します。Nginx を起動した後、192.168.43.102 にアクセスすると、バックアップ ノードが負荷の役割を果たしていることがわかります。

4. Keepalivedスクリプト情報を設定する

1.マスターノードとスレーブノードの/etc/keepalivedディレクトリにcheck_nginx.shファイルを追加して、Nginxのインベントリステータスを検出し、keepalived.confファイルを追加します。

check_nginx.sh ファイルの情報は次のとおりです。

#!/bin/bash
#ログを記録するために使用される時間変数 d=`date --date today +%Y%m%d_%H:%M:%S`
# nginx プロセスの数を計算します n=`ps -C nginx --no-heading|wc -l`
#プロセスが0の場合は、nginxを起動して、nginxプロセスの数を再度確認します。
#まだ0の場合は、nginxを起動できないことを意味し、keepalivedをオフにする必要があります
[ $n -eq "0" ]の場合;
  /etc/rc.d/init.d/nginx を起動します
  n2=`ps -C nginx --no-heading|wc -l`
  [ $n2 -eq "0" ]の場合;
    echo "$d nginx がダウンしました。keepalived は停止します" >> /var/log/check_ng.log
    systemctl 停止キープアライブ
  フィ
フィ

追加後、スクリプトが実行権限を取得できるように check_nginx.sh ファイルを承認します。

[root@localhost keepalived]# chmod -R 777 /etc/keepalived/check_nginx.sh

2. マスターノードの /etc/keepalived ディレクトリに keepalived.conf ファイルを追加します。具体的な情報は次のとおりです。

vrrp_script chk_nginx { 
 スクリプト "/etc/keepalived/check_nginx.sh" // nginx プロセスを検出するためのスクリプト間隔 2 
 体重 -20 
} 

グローバル定義 { 
 通知メール{ 
  //メールリマインダーを追加できます} 
} 
vrrp_インスタンス VI_1 { 
 状態 MASTER #状態が MASTER であり、バックアップマシンが BACKUP であることを示します
 インターフェース ens33 #インスタンスにバインドされたネットワーク カードを設定します (IP アドレスを確認し、個人のネットワーク カードに応じてバインドする必要があります)
 virtual_router_id 51 #同じインスタンスではvirtual_router_idは同じである必要があります mcast_src_ip 192.168.43.101 
 優先度250 #MASTERはBACKUPよりも優先度が高い。例えば、BACKUPは240である。 
 advert_int 1 #マスターとバックアップのロードバランサー間の同期チェックの間隔(秒単位) nopreempt #非プリエンプティブモード authentication { #認証を設定する auth_type PASS #マスタースレーブサーバー認証方法 auth_pass 123456 
 } 
 トラックスクリプト { 
  チェック_nginx 
 } 
 virtual_ipaddress { #VIPを設定する
  192.168.43.150 # 複数の仮想 IP を設定できます。行を折り返すだけです} 
}

3. バックアップノードのetc/keepalivedディレクトリにkeepalived.conf設定ファイルを追加します。

情報は以下の通りです。

vrrp_script chk_nginx { 
 スクリプト "/etc/keepalived/check_nginx.sh" // nginx プロセスを検出するためのスクリプト間隔 2 
 体重 -20 
} 

グローバル定義 { 
 通知メール{ 
  //メールリマインダーを追加できます} 
} 
vrrp_インスタンス VI_1 { 
 状態 BACKUP #状態が MASTER であり、バックアップ マシンが BACKUP であることを示します
 interface ens33 #インスタンスにバインドされたネットワーク カードを設定します (IP アドレスで表示)
 virtual_router_id 51 #同じインスタンスではvirtual_router_idは同じである必要があります mcast_src_ip 192.168.43.102 
 優先度 240 #MASTER は BACKUP よりも優先度が高くなります。たとえば、BACKUP は 240 です。 
 advert_int 1 #マスターとバックアップのロードバランサー間の同期チェックの間隔(秒単位) nopreempt #非プリエンプティブモード authentication { #認証を設定する auth_type PASS #マスタースレーブサーバー認証方法 auth_pass 123456 
 } 
 トラックスクリプト { 
  チェック_nginx 
 } 
 virtual_ipaddress { #VIPを設定する
  192.168.43.150 # 複数の仮想 IP を設定できます。行を折り返すだけです} 
}

ヒント:設定情報に関する注意事項

  • 状態 - マスターサーバーはMASTERとして構成する必要があり、スレーブサーバーはBACKUPとして構成する必要があります。
  • インターフェース - これはネットワークカードの名前です。私はVM12.0を使用しているので、ここでのネットワークカードの名前はens33です。
  • mcast_src_ip - 各IPアドレスを設定する
  • 優先度 - マスター サーバーの優先度はスレーブ サーバーの優先度よりも高くする必要があります。ここでは、マスター サーバーは 250 に設定され、スレーブ サーバーは 240 に設定されています。
  • virtual_ipaddress - 仮想 IP (192.168.43.150) を設定します
  • 認証 - auth_passはマスターサーバーとスレーブサーバー間で一貫している必要があります。keepalivedはこれに依存して通信します。
  • virtual_router_id - マスターサーバーとスレーブサーバーのIDは同じである必要があります

5. クラスターの高可用性 (HA) 検証

ステップ1 マスターマシンでKeepalivedとNginxサービスを開始する

[root@localhost keepalived]# keepalived -D -f /etc/keepalived/keepalived.conf
[root@localhost keepalived]# サービス nginx を開始

サービスの起動プロセスを表示する

[root@localhost keepalived]# ps -aux|grep nginx
root 6390 0.0 0.0 20484 612 ? Ss 19:13 0:00 nginx: マスタープロセス /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
誰も 6392 0.0 0.0 23008 1628 ? S 19:13 0:00 nginx: ワーカープロセス
ルート 6978 0.0 0.0 112672 968 ポイント/0 S+ 20:08 0:00 grep --color=auto nginx

Keepalived の起動プロセスを表示する

[root@localhost keepalived]# ps -aux|grep keepalived
ルート 6402 0.0 0.0 45920 1016 ? Ss 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
ルート 6403 0.0 0.0 48044 1468 ? S 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
ルート 6404 0.0 0.0 50128 1780 ? S 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
ルート 7004 0.0 0.0 112672 976 ポイント/0 S+ 20:10 0:00 grep --color=auto keepalived

ip add を使用して仮想 IP のバインド状態を確認します。192.168.43.150 ノード情報が表示された場合、マスター ノードにバインドされています。

[root@localhost keepalived]# ip を追加
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 UNKNOWN qlen 1
 リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 スコープ ホスト lo
  valid_lft 永久 preferred_lft 永久
 inet6 ::1/128 スコープホスト 
  valid_lft 永久 preferred_lft 永久
2: ens33: <BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast 状態 UP qlen 1000
 リンク/イーサ 00:0c:29:91:bf:59 brd ff:ff:ff:ff:ff:ff
 inet 192.168.43.101/24 brd 192.168.43.255 スコープ グローバル ens33
  valid_lft 永久 preferred_lft 永久
 inet 192.168.43.150/32 スコープ グローバル ens33
  valid_lft 永久 preferred_lft 永久
 inet6 fe80::9abb:4544:f6db:8255/64 スコープ リンク 
  valid_lft 永久 preferred_lft 永久
 inet6 fe80::b0b3:d0ca:7382:2779/64 スコープ リンク 暫定 dadfailed 
  valid_lft 永久 preferred_lft 永久
 inet6 fe80::314f:5fe7:4e4b:64ed/64 スコープ リンク暫定 dadfailed 
  valid_lft 永久 preferred_lft 永久
3: virbr0: <NO-CARRIER、BROADCAST、MULTICAST、UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
 リンク/イーサ 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff
 inet 192.168.122.1/24 brd 192.168.122.255 スコープ グローバル virbr0
  valid_lft 永久 preferred_lft 永久
4: virbr0-nic: <ブロードキャスト、マルチキャスト> mtu 1500 qdisc pfifo_fast マスター virbr0 状態 DOWN qlen 1000
 リンク/イーサ 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff

ステップ 2 バックアップ ノードで Nginx サービスと Keepalived サービスを開始し、サービスの起動ステータスを確認します。バックアップ ノードに仮想 IP が表示される場合は、Keepalived 構成ファイルに問題があります。この状況はスプリット ブレインと呼ばれます。

[root@localhost keepalived]# クリア
[root@localhost keepalived]# ip を追加
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 UNKNOWN qlen 1
 リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 スコープ ホスト lo
  valid_lft 永久 preferred_lft 永久
 inet6 ::1/128 スコープホスト 
  valid_lft 永久 preferred_lft 永久
2: ens33: <BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast 状態 UP qlen 1000
 リンク/イーサ 00:0c:29:14:df:79 brd ff:ff:ff:ff:ff:ff
 inet 192.168.43.102/24 brd 192.168.43.255 スコープ グローバル ens33
  valid_lft 永久 preferred_lft 永久
 inet6 fe80::314f:5fe7:4e4b:64ed/64 スコープ リンク 
  valid_lft 永久 preferred_lft 永久
3: virbr0: <NO-CARRIER、BROADCAST、MULTICAST、UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
 リンク/イーサ 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff
 inet 192.168.122.1/24 brd 192.168.122.255 スコープ グローバル virbr0
  valid_lft 永久 preferred_lft 永久
4: virbr0-nic: <ブロードキャスト、マルチキャスト> mtu 1500 qdisc pfifo_fast マスター virbr0 状態 DOWN qlen 1000
 リンク/イーサ 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff

ステップ3 サービスを確認する

アドレスを複数回参照して強制的に更新します: http://192.168.43.150。103 と 104 が交互に複数回表示され、Nginx-1 が表示され、マスター ノードが Web サービスを転送していることがわかります。

ステップ4 マスターkeepalivedサービスとNginxサービスを閉じ、Webサービスにアクセスしてサービス転送ステータスを確認します。

[root@localhost keepalived]# killall keepalived
[root@localhost keepalived]# サービス nginx を停止します

この時、192.168.43.150 を強制的に更新すると、ページには 103 と 104 が交互に表示され、Nginx-2 が表示されることがわかります。VIP は 192.168.43.102 に転送されており、サービスが自動的にバックアップ ノードに切り替わっていることが証明されています。

ステップ5 マスターKeepalivedサービスとNginxサービスを開始する

この時、VIPがMasterに奪還され、ページには103と104が交互に表示されていることを再度確認しました。この時、Nginx-1が表示されています。

4. Keepalived プリエンプティブモードと非プリエンプティブモード

Keepalived の HA は、プリエンプティブ モードと非プリエンプティブ モードに分かれています。プリエンプティブ モードでは、MASTER が障害から回復した後、BACKUP ノードから VIP をプリエンプトします。非プリエンプティブ モードとは、MASTER が復元された後、BACKUP が MASTER にアップグレードされた後の VIP がプリエンプトされないことを意味します。

非プリエンプティブモード構成:

1> vrrp_instanceブロックの下の2つのノードそれぞれにnopreempt命令を追加し、VIP競合が不要であることを示します。

2> ノードの状態は BACKUP です。両方の keepalived ノードが起動すると、デフォルトで BACKUP 状態になります。マルチキャスト情報を送信した後、両者は優先度に基づいて MASTER を選出します。両方に nopreempt が設定されているため、マスターは障害から回復した後、VIP をプリエンプトしません。これにより、VIP の切り替えによって発生する可能性のあるサービスの遅延を回避できます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ソフトウェア ロード バランサを使用して Web サーバー クラスターを実装する (iis+nginx)
  • nginx+apache+mysql+php+memcached+squid でクラスタ Web 環境を構築します
  • nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

<<:  Vue が DingTalk の出勤カレンダーを実装

>>:  MySQL Community Server 5.6.39 のインストール方法

推薦する

Vue大画面表示適応方法

この記事では、vueの大画面表示適応の具体的なコードを参考までに紹介します。具体的な内容は以下のとお...

JavaScript 関数の高度な説明

目次関数定義方法関数呼び出し(6種類)これは問題を指摘している厳密モード高階関数閉鎖再帰: 自分自身...

Unicode における CJK (中国語、日本語、韓国語の統合表意文字) 文字の概要

CJK は CJK Unified Ideographs の略称で、「中国語、日本語、韓国語の統一表...

DPlayer.js ビデオ再生プラグインの使い方

DPlayer.jsビデオプレーヤープラグインは使いやすい主な用途: ビデオの再生、監視の開始、終了...

macOS SierraにApache2.4+PHP7.0+MySQL5.7.16をインストールする

Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...

vue+canvasでタイムラインを描く方法

この記事では、参考までにvueキャンバスのタイムライン描画の具体的なコードを紹介します。具体的な内容...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

CSS を使用してマウスをホバーすることで他のタグのスタイルを変更するサンプルコード

序文:私の知る限り、現在 CSS で制御できるのは、タグをホバーしたときにそのタグの下の兄弟タグとサ...

Squid を使用して http および https 用のプロキシ サーバーを構築する方法

nginx を導入した際に、フォワードプロキシの設定も nginx を使っていました。しかし、htt...

Dockerコンテナのディスクがいっぱいになった場合の状況のまとめ

序文この記事では、最近私が遭遇した 2 つの状況について説明します。今後、新たな発見があれば追加して...

mysql5.6.8 ソースコードのインストールプロセス

カーネル: [root@opop ~]# cat /etc/centos-release CentO...

数百万のデータボリュームに対する MySQL ページングクエリ方法とその最適化の提案

データベース SQL の最適化はよくある問題です。何百万ものデータ ボリュームに対してページング ク...

MySQL の重複データの処理方法 (防止と削除)

一部の MySQL テーブルには重複レコードが含まれている場合があります。重複データが存在することを...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

Linux 環境に MySQL 8.0 をインストールするプロセスの紹介

目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...