このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
- 02 Apache2で自己認証ssl [中間証明書の整合性確認]
最近の更新
Kubernetes を使って Galeraで冗長化されたDB、GlusterFSで冗長化されたディスクを利用して
冗長化されたWordpressを作って完全冗長化してみる。
GlusterFSは、こちら で作成したボリュームにディレクトリを作成して利用する。
mount.glusterfs localhost:k8s-volume /mnt mkdir /mnt/wordpress/ # ls /mnt/ pv01 wordpress
wordpress-pv.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: wordpress-pv labels: name: wordpress-pv spec: accessModes: - ReadWriteMany capacity: storage: 1Gi glusterfs: endpoints: glusterfs path: k8s-volume/wordpress readOnly: false
kubectl create -f wordpress-pv.yaml
wordpress-pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: wordpress-pvc name: wordpress-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi selector: matchLabels: name: wordpress-pv status: {}
kubectl create -f wordpress-pvc.yaml
このGaleraはダウンしても、起動してきたとき勝手に同期してよく出来てます。
Galeraは、下記を利用
https://github.com/bitnami/charts/tree/master/bitnami/mariadb-galera/
helm repo add bitnami https://charts.bitnami.com/bitnami
今回は、PVなしで、DB(wordpress)を作成してインストール
※本番では、persistence.existingClaimでPVCを指定して利用する。
root password | root_password |
db.name | wordpress |
db.user | wp_user |
db.password | wp_pass |
helm install my-release \ --set persistence.enabled=false \ --set rootUser.password=root_password \ --set db.user=wp_user \ --set db.password=wp_pass \ --set db.name=wordpress \ bitnami/mariadb-galera
serviceのClusterIPは、次のwordpressデプロイで利用します。
# kubectl get svc my-release-mariadb-galera NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-release-mariadb-galera ClusterIP 10.110.173.32 <none> 3306/TCP 89m # kubectl get pod -l app.kubernetes.io/name=mariadb-galera NAME READY STATUS RESTARTS AGE my-release-mariadb-galera-0 1/1 Running 1 (48m ago) 75m my-release-mariadb-galera-1 1/1 Running 0 74m my-release-mariadb-galera-2 1/1 Running 0 74m
# kubectl exec -it my-release-mariadb-galera-0 -- bash $ mysql -u root -p MariaDB [(none)]> show status like 'wsrep_local_state_comment'; +---------------------------+--------+ | Variable_name | Value | +---------------------------+--------+ | wsrep_local_state_comment | Synced | +---------------------------+--------+ 1 row in set (0.002 sec) MariaDB [(none)]> show status like 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.001 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | | wordpress | +--------------------+ 6 rows in set (0.038 sec)
1.GlusterFSで作成した wordpress-pvc をwordpress の/var/www/htmlでマウントする。
wordpress.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: wordpress
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: 10.110.173.32:3306
- name: WORDPRESS_DB_USER
value: wp_user
- name: WORDPRESS_DB_PASSWORD
value: wp_pass
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wordpress-local-storage
mountPath: /var/www/html
volumes:
- name: wordpress-local-storage
persistentVolumeClaim:
claimName: wordpress-pvc
kubectl create -f wordpress.yaml
これで外部から見えるようになります。
後は、このexternalIPsをグローバルIPからロードバランスするだけ。
wordpress-externalip.yaml apiVersion: v1 kind: Service metadata: name: external-ip spec: type: ClusterIP externalIPs: - 172.16.0.93 - 172.16.0.153 - 172.16.0.166 ports: - name: cluster-port port: 8080 targetPort: 80 selector: app: wordpress
kubectl create -f wordpress-externalip.yaml