仮想環境とプロジェクト構造の構築

仮想環境のセットアップ

仮想マシンの構築

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;
  }
}

タグ: VirtualBox vagrant Docker MySQL redis

7月21日 02:42 投稿