仮想環境のセットアップ
仮想マシンの構築
Oracle VM VirtualBoxとVagrantを使用したLinux仮想環境の構築:
# 仮想マシンの初期化
vagrant init centos/7
# 仮想マシンの起動
vagrant up
# SSH接続
vagrant ssh
rootユーザーのパスワードはデフォルトでvagrantです。
ネットワーク設定
固定IPアドレスの設定(Vagrantfileの編集):
config.vm.network "private_network", ip: "192.168.56.10"
設定適用後:
# 設定のリロード
vagrant reload
# IPアドレスの確認
ip addr show
Dockerのインストール
公式ドキュメントに基づくインストール手順:
# 既存パッケージの削除
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# リポジトリの設定
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Dockerエンジンのインストール
sudo yum install docker-ce docker-ce-cli containerd.io
# Dockerの起動
sudo systemctl start docker
sudo systemctl enable docker
Dockerコンテナの管理
MySQLとRedisのコンテナ設定:
# MySQLコンテナの起動
docker run -p 3306:3306 --name db-container \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-v /app/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=rootpass \
-d mysql:5.7
# Redisコンテナの起動
mkdir -p /app/redis/conf
touch /app/redis/conf/redis.conf
docker run -p 6379:6379 --name cache-container \
-v /app/redis/data:/data \
-v /app/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
開発環境の統一
Maven設定(settings.xml):
<mirror>
<id>aliyun-maven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
マイクロサービス構造
サービス構成例:
<modules>
<module>product-service</module>
<module>order-service</module>
<module>inventory-service</module>
<module>user-service</module>
<module>promotion-service</module>
</modules>
データベース初期化
スキーマ作成スクリプト:
CREATE DATABASE IF NOT EXISTS product_db;
CREATE DATABASE IF NOT EXISTS order_db;
CREATE DATABASE IF NOT EXISTS inventory_db;
-- その他サービス用データベース
分散システム環境の構築
Spring Cloud Alibabaの導入
依存関係の管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
サービス登録(Nacos)
設定例(application.yml):
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: product-service
APIゲートウェイ(Spring Cloud Gateway)
ルーティング設定:
spring:
cloud:
gateway:
routes:
- id: product-route
uri: lb://product-service
predicates:
- Path=/api/products/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{segment}
Nginxの基本設定
リバースプロキシ設定例:
server {
listen 80;
server_name app-domain.com;
location / {
proxy_set_header Host $host;
proxy_pass http://gateway-service:8080;
}
}
ロードバランシング構成
upstream backend {
server gateway-instance1:8080;
server gateway-instance2:8080;
}
server {
location / {
proxy_pass http://backend;
}
}