微服务部署笔记

目录

基本操作

把本地代码复制到远程

重启docker服务

docker重启所有镜像

linux 杀死进程

加载镜像

搭建Nomad

安装nomad

启动nomad服务端

启动客户端

然后在浏览器输入IP:4646就可以看到nomad图形化界面

部署前端

要把代码目录映射到容器里面,同时在容器的/etc/nginx 也要映射到外面的目录 /nginx/conf

nomad 新建一个jobs

部署JAVA

部署Node

搭建consul

(为Kong提供DNS服务)

安装consul

搭建Kong

安装postgres

安装需要的镜像

 启动kong start.sh

搭建Konga

注意坑


目录

基本操作

把本地代码复制到远程

重启docker服务

docker重启所有镜像

linux 杀死进程

加载镜像

搭建Nomad

安装nomad

启动nomad服务端

启动客户端

然后在浏览器输入IP:4646就可以看到nomad图形化界面

部署前端 

要把代码目录映射到容器里面,同时在容器的/etc/nginx 也要映射到外面的目录 /nginx/conf

nomad 新建一个jobs

部署JAVA

部署Node

安装consul

搭建Kong

安装postgres

安装需要的镜像

 启动kong start.sh

搭建Konga

注意坑


基本操作

  • 把本地代码复制到远程

scp 本地文件 远程用户名@ip:远程目录

  • 重启docker服务

systemctl restart docker

  • docker重启所有镜像

docker start $(docker ps -aq)

  • linux 杀死进程

        -9 是强制杀死信号

pkill -9 nomad    杀死系统进程

  • 加载镜像

docker load

docker save 保存镜像

给镜像打上标记:docker tag 17bdcd448d1e  nginx:latest

搭建Nomad

  • 安装nomad

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum -y install nomad

  • 启动nomad服务端

nohup nomad agent --config={路径} &sleep 10

server.hcl

log_level = "DEBUG"

data_dir = "/root/nomad/data" //nomad安装目录下新建一个data文件夹

server { enabled = true bootstrap_expect = 1 }

  • 启动客户端

nohup nomad agent --config=/home/shr/nomad/config/client.hcl &sleep 10

client.hcl

log_level = "DEBUG"

data_dir = "/home/nomad/data"

name = "client1"

client { enabled = true servers = ["10.16.193.71:4647"] }

ports { http = 5656 }

plugin "docker" { config { volumes { enabled = true } gc { image = false } } } plugin "raw_exec" { config { enabled = true } }

  • 然后在浏览器输入IP:4646就可以看到nomad图形化界面

部署前端

一般来讲会把容器里面的/etc/nginx映射出去,否则后期无法修改配置文件,比如突然要多映射一个文件服务

  • 要把代码目录映射到容器里面,同时在容器的/etc/nginx 也要映射到外面的目录 /nginx/conf

  • nomad 新建一个jobs

job "frameui-qd-jobs" {
	datacenters = ["dc1"]
    type = "service"
  	group "app" {
    	task "frameui-qd-tasks" {
      	driver = "docker"
        	config {
          	volumes = ["/home/frontEnd:/home/frontEnd","/home/nginx/conf:/etc/nginx"]
            image = "nginx:1.19.4"
            port_map {
            	http = 80  //服务对外暴露的端口
            }
            work_dir="/home/frontEnd/dist"
          }
        	service {
            name = "frameui-qd-service"
            port = "http"
            check {
              name     = "alive"
              type     = "tcp"
              interval = "10s"
              timeout  = "2s"
              check_restart {
                limit = 10 # 健康检查失败次数,超过此数量服务会重启
                grace = "60s" # 在启动或者重启服务后进行健康检查前等待的时间
                ignore_warnings = false # 是否忽视警告
               }
            }
     		 } 
        	resources {
              cpu = 10
              memory = 512
              network {
                  port "http" {
                  	static= 8847   //容器工作的端口
                  }
              }
        }
         logs {
        	max_files = 5
           max_file_size = 10
        }
      }
    }
}

部署JAVA

job "shr-centralized-inspect-service-jobs" {
	datacenters = ["dc1"]
      type = "service"
      group "app" {
        task "shr-centralized-inspect-service-tasks" {
          driver = "docker"
    			config {
        	volumes = ["/home/backEnd:/app"]
          	image = "openjdk:8"
          	port_map {
            	http = 18006
            }
            work_dir = "/app"
            command = "java"
          	args = ["-jar","./shr-centralized-inspect-service.jar"]
           extra_hosts = [""]
        }
          service {
            name = "shr-centralized-inspect-service"
            port = "http"

            check {
              name     = "alive"
              type     = "tcp"
              interval = "10s"
              timeout  = "2s"
              check_restart {
                limit = 10 # 健康检查失败次数,超过此数量服务会重启
                grace = "60s" # 在启动或者重启服务后进行健康检查前等待的时间
                ignore_warnings = false # 是否忽视警告
               }
            }
     		 } 
        
         resources {
              cpu = 1000
              memory = 1024
              network {
                  port "http" {
                  	static= 8443
                  }
              }
        }
         logs {
        	max_files = 5
           max_file_size = 10
        } 
    }
  }
}

部署Node

job "node-generatedoc-jobs" {
	datacenters = ["dc1"]
      type = "service"
      group "app" {
        task "node-generatedoc-tasks" {
          driver = "docker"
    	config {
        	volumes = ["/home/shr/node-generatedoc:/app"]
          	image = "node"
          	port_map {
            	http = 4000
            }
            work_dir = "/app"
            command = "npm"
          	args = ["run","dev"]
           extra_hosts = [""]
        }
        logs {
        	max_files = 5
           max_file_size = 10
        }
    }
  }
}

搭建consul

(为Kong提供DNS服务)

  • 安装consul

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum -y install consul

  • 启动consol

nohup consul agent --config-file=/home/consul/config/server.json

搭建Kong

  • 安装postgres

docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=123456" \ postgres:11

  • 安装需要的镜像

docker run --rm \

--link kong-database:kong-database \

-e "KONG_DATABASE=postgres" \

-e "KONG_PG_HOST=kong-database" \

-e "KONG_PG_USER=kong" \

-e "KONG_PG_PASSWORD=123456" \

-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \

kong kong migrations bootstrap

  •  启动kong start.sh

docker rm -f kong docker run -d --name kong \

--link kong-database:kong-database \

-v /home/kong/kong.conf:/etc/kong/kong.conf \ //不能忘记映射,不然配置文件没发改了,要修改dns_resolver -e "KONG_DATABASE=postgres" \

-e "KONG_PG_HOST=kong-database" \

-e "KONG_PG_PASSWORD=123456" \

-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \

-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \

-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \

-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \

-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \

-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \

-p 8000:8000 \

-p 8001:8001 \

kong

搭建Konga

docker run -p 1337:1337 \

--name konga \

-e "NODE_ENV=production" \

-e "TOKEN_SECRET=SYhy_5000" \

pantsel/konga

注意坑

  • 1.服务暴露出去的协议要和网关上对应的协议要一致,如暴露的端口是https端口,那么kong写服务的时候也得是https
  • 如果服务暴露出去的是http协议,那么如果网关只支持http,那么就无法解析
  • nginx映射的时候会先到/etc/nginx/nginx.conf找文件,然后到/usr/share/nginx/html 找入口的index.html ,所以对于前端来讲要把根目录的这个/指向自己的代码目录,也就是替换/user/share/nginx/html这个默认查找,这个是nginx的那个开始页

  • 卷映射的时候左边没有东西,是没办法映射到右边的 ,如/路径1:/路径2,只能从路径1到路径2,不能从路径2到路径1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值