.NET COER+CONSUL微服务项目在CENTOS环境下的部署实践

一、整体的环境安装与部署

1.1、DOCKER环境的部署

1.1.1 安装DOCKER 

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast && yum -y install docker-ce
systemctl restart docker

安装装成后,可以使用  docker指令验证是否正确安装

docker info

 1.1.2 自定义 Docker 数据目录

默认情况下,DOCKER的数据目录都在系统盘下,可以修改 /etc/docker/daemon.json(如果不存在可以创建一个同名文件) 文件,并添加或修改如下配置,调整磁盘数据目录:

{"data-root": "/my/custom/docker"
}

1.2、CONSUL环境的初始化

1.2.1 安装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

1.2.2 基本的参数配置

默认配置文件路径是:/etc/consul.d/consul.hcl,如果文件不存在,使用命令 sudo vi创建一个

#默认的数据文件路径,可以从其他的CONSUL里直接复制相关数据在这里
data_dir = "/var/consul" 
#如果出现错误:将这个值修改为本机的IP
bind_addr = "0.0.0.0" 
client_addr = "0.0.0.0"
#这里的默认配置是3,因为我是简易环境,只配置一个CONSUL节点
bootstrap_expect=1 
#配合单节点启动使用
server = true 
#是否启动UI,配置为TRUE的情况下,可以通过IP:8500进行CONSUL的UI访问。
ui_config{enabled = true
}

1.2.3 自启动配置

创建文件:sudo vi /etc/systemd/system/consul.service

[Unit]  
Description=Consul Agent  
After=network.target  [Service]  
Type=simple  
#User=consul  # 如果你的Consul是以特定用户身份运行的,请指定该用户;否则,可以省略此行  
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d -log-file=/var/log/consul/consul.log  
Restart=on-failure  [Install]  
WantedBy=multi-user.target

 启动,并设置为自启动

sudo systemctl daemon-reload
sudo systemctl start consul
sudo systemctl enable consul

验证是否正常启动

curl http://127.0.0.1:8500/ui/dc1/services

1.3、REDIS的安装与配置

1.3.1 安装REDIS

sudo yum update -y

在安装 Redis 之前,确保安装了编译 Redis 所需的基本工具和依赖

sudo yum install -y gcc make

 从 Redis 的官方网站下载最新版本的源码,并进行解压:

cd /usr/local/src
sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar xzf redis-stable.tar.gz
cd redis-stable

使用 make 命令编译 Redis: 

sudo make

 编译完成后,运行以下命令进行测试并安装:

sudo make test
sudo make install

1.3.2 基本参数配置

Redis 提供了一个默认的配置文件,你可以将其复制到 /etc 目录以进行系统级别的配置管理:

sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/

 你可以编辑 /etc/redis/redis.conf 文件,根据需要进行自定义配置: 

你可以编辑 /etc/redis/redis.conf 文件,根据需要进行自定义配置:

基本配置

#守护进程模式:将 daemonize no 改为 daemonize yes,以使 Redis 作为后台服务运行。
daemonize yes
#绑定地址:如果你希望 Redis 监听所有接口,可以将 bind 127.0.0.1 改为 bind 0.0.0.0。
bind 0.0.0.0
#保护模式:如果你想允许远程连接,可能需要禁用保护模式,将 protected-mode yes 改为 protected-mode no。
protected-mode no

1.3.3 自启动配置

创建一个 Systemd 服务文件,以便在系统启动时自动启动 Redis

sudo vi /etc/systemd/system/redis.service

在文件中添加以下内容

sudo vi /etc/systemd/system/redis.service

 重新加载 Systemd 配置,并启动 Redis 服务:

sudo systemctl daemon-reload
sudo systemctl start redis
sudo systemctl enable redis

1.4、 NGINX的安装与配置

1.4.1 安装NGINX

sudo yum update -y
sudo yum install epel-release -y
sudo yum install nginx -y

1.4.2 参数配置

Nginx的主配置文件位于/etc/nginx/nginx.conf,虚拟主机配置文件位于/etc/nginx/conf.d/目录下。

server {listen       80;server_name  example.com;location / {root   /usr/share/nginx/html;index  index.html index.htm;}error_page  500 502 503 504 /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

1.4.3 自启动配置

sudo systemctl start nginx
sudo systemctl enable nginx

检查NGINX状态

sudo systemctl status nginx

1.4.4 防火墙配置

如果已经启动了防火墙,需要允许HTTP和HTTPS流量

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

1.4.5 常用的Nginx服务管理命令

  • 启动Nginx: sudo systemctl start nginx
  • 停止Nginx: sudo systemctl stop nginx
  • 重启Nginx: sudo systemctl restart nginx
  • 重新加载Nginx配置: sudo systemctl reload nginx
  • 查看Nginx状态: sudo systemctl status nginx
  • 重要命令:nginx -t    可以验证配置文件是否正确

二、项目的应用与部署

2.1 docker-compose

2.1.1 环境安装

下载二进制文件,具体版本号,可以去github的发布页面上查看一下

sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

赋予执行权限 

sudo chmod +x /usr/local/bin/docker-compose

 检查安装是否成功

docker-compose --version

2.1.2 yml文件配置说明

基本配置下如图。

version: "2.2"
services:ccw_website:build:context: ./CXBIM.CCW_WebSitedockerfile: Dockerfileimage: cxbim-ccw-websiteports:- "8430:8430"- "8431:8431"volumes:- /mnt/data/Publish/CXBIM.CCW_WebSite:/appenvironment:- ASPNETCORE_URLS=http://*:8430;http://*:8431- SET_CONTAINER_TIMEZONE=true- TZ=Asia/Shanghainetworks:- cxbim-net

version:版本号,不同的的版本之间语法可能会有差异

services:需要构件或运行的服务集合,期下可以建立多个service,以上例子中为:ccw_website

        build:context=指向项目的文件夹,相对于当前yaml文件的路径;dockfile:用于构件镜像的文件,一般默认为Dockerfile。

        image:镜像名称

        ports:宿主面端口:容器内端口,一般只配置一个即可。

        volumes:将DOCKER挂载指向宿主机的某个具体的地址,对于拥有文件存储类的服务,这个是必要的。

        environment:常用的一环境变量参数,在运行容器的时候,会带入

        networks:网络,这个我是随意配置了一下。

2.2.1 常用指令

构建:docker-compose build        ——  可追加追加 no-cache ,节省磁盘空间

运行:docker-compose up -d        —— -d表示后台运行

停用:docker-compose stop

清理:docker system prune

三、遇到过的问题

3.1 时区问题

        在DOCKER窗口内,默认使用的时区是伦敦时区,与北京时区差了8小时。在.NET项目内,使用DateTime.Now的时候就差了8小时。

        在docker-compose.yml文件中,进行配置调整:

- TZ=Asia/Shanghai

        另外,不同的 compose版本可能会有语法差异,可以使用另一个配置

- CONTAINER_TIMEZONE=Asia/Shanghai

 实际效果截图如下:

3.2 磁盘占用问题

  1. 参考1.2中,调整DOCKER的数据目录
  2. 在docker-compose buid 的指令后,追加no-cache
  3. 使用指令《docker system prune》清理磁盘占用

3.3 REDIS 内存过度提交问题

如果你希望立即启用内存过度提交,可以运行以下命令:

sudo sysctl vm.overcommit_memory=1

要使内存过度提交设置在系统重启后依然有效,你需要将设置添加到 /etc/sysctl.conf 文件中

在文件末尾添加以下一行

vm.overcommit_memory = 1

然后,应用新的设置:

sudo sysctl -p

最后重启REDIS

sudo systemctl restart redis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/406345.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年【甘肃省安全员C证】考试题及甘肃省安全员C证考试总结

题库来源:安全生产模拟考试一点通公众号小程序 甘肃省安全员C证考试题考前必练!安全生产模拟考试一点通每个月更新甘肃省安全员C证考试总结题目及答案!多做几遍,其实通过甘肃省安全员C证模拟试题很简单。 1、【多选题】《安全生产…

企业要部署多点组网应该怎么做?

企业在进行扩张后,往往有建立多点组网的需求。本文将详细介绍企业怎样实现多点组网,以便有需要的用户进行了解和选择。 企业想要实现企业多点组网时,首先需要进行全面的网络规划和设计。这包括评估公司当前的网络架构、各个分支机构的地理位置…

AOP+ 自定义注解 +SpringElExpress自研缓存组件

AOP 自定义注解 SpringElExpress自研缓存组件 背景前置知识改造代码 背景 思考下这段代码,想想项目中是不是到处存在 先查缓存,缓存里面有,直接返回;缓存没有,查数据库,并更新到缓存 思考:如何…

区块链知识体系fisco-bcos实战

文章目录 一、区块链发展概述及类型和特征1.1 区块链的概念1.2 区块链的起源1.3 区块链的发展历程1.4 区块链的类型和特征 二、区块链的常见技术架构2.1 技术架构2.2 核心技术 三、区块链的常见应用3.1 生态环境监测3.2 医疗废弃物追踪解决3.3 区块链在电子政务领域的应用3.4 在…

mac安装ipa包【金铲铲为例】

mac安装ipa包 安装PlayCover 链接:https://github.com/PlayCover/PlayCover 1、点最新Releases 2、cmd ↓,拉到最下面下载dmg 3、安装 图标拖拽到Applications里 IPA下载 以金铲铲为例,良心砸壳包站点,有能力可以支持一下…

Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)

1、简介 Modbus是一种通信协议,广泛用于工业自动化和过程控制领域,允许不同设备之间进行数据交换。libmodbus是一个用于 Modbus 协议的开源库,主要用于开发和实现 Modbus 协议的客户端和服务器应用程序。libmodbus 以 C 语言编写&#xff0c…

Gartner发布2024年终端和工作空间安全成熟度曲线:24项相关技术发展和应用状况及趋势

由于攻击者使用人工智能来增强网络钓鱼和终端攻击,企业需要高级安全措施来阻止入侵行为。此技术成熟度曲线可帮助安全和风险管理领导者识别可增强终端和工作空间保护的技术。 需要知道什么 网络安全创新层出不穷,但区分真正的进步与短暂的趋势却很困难。…

66 IPV4/6 OSPFV2/3 实操

一 网络括谱图 二 IPV6 一 华为IPV6地址的配置思路 1 全局上开启IPV6功能 # ipv6 # 2 在指定的接口上配置IPV6地址上的接口上配置IPV6地址 ipv6 enable 3 在接口上配置IPV6地址 ipv6 address 2001:1::254/64 脚本 # interface GigabitEthernet0/0/1 ipv6 enable ip add…

Ajax基础案例

接口文档 欢迎使用 - AJAX阶段 地区查询 图解 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

libLZMA库iOS18平台编译

1.下载xz源码: 使用autogen.sh生成configure文件 2.生成makefile rm -rf ./build/iOS && mkdir -p ./build/iOS && cd ./build/iOS && ../../configure --host=arm-apple-darwin64 --prefix=`pwd`/Frameworks/lzma CC="xcrun -sdk iphoneos cl…

熟悉Labview工具用

目录复制 目录 0.0&#xff1a;快捷键0.1&#xff1a;全局非图标显示0.2&#xff1a;小技巧&#xff1a;图片导入为程序1.2&#xff1a;事件结构1.2.0&#xff1a;超时分支&#xff1a;当事件结构框左上角设置为1时&#xff0c;单位毫秒&#xff0c;即理解为1ms内没有其他的事件…

ES+FileBeat+Kibana日志采集搭建体验

1.环境准备 需要linux操作系统&#xff0c;并安装了docker环境 此处使用虚拟机演示。&#xff08;虚拟机和docker看参考我之前写的文章&#xff09; VirtualBox安装Oracle Linux 7.9全流程-CSDN博客 VirtualBox上的Oracle Linux虚拟机安装Docker全流程-CSDN博客 简单演示搭建ES…

Linux_Shell三剑客grep,awk,sed-08

三剑客的概述&#xff1a; awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客&#xff0c;也是必须掌握的linux命令之一。三者的功能都是处理文本&#xff0c;但侧重点各不相同&#xff0c;其中属awk功能最强大&#xff0c;但也最复杂。grep更适合单纯的查找…

好用又便宜的平替苹果笔推荐:2024开学季盘点五款高性价比电容笔

​随着网络学习的不断发展&#xff0c;电容笔是一种常见的数字书写工具&#xff0c;受到许多学生党广泛欢迎&#xff0c;因为它可以与平板电脑完美配对&#xff0c;满足用户在平板上的书写、绘画等需求。可是原装笔的价格略贵&#xff0c;平替苹果笔的品牌又很多&#xff0c;很…

Java:循环练习

目录 1. 回文判断 2. 减法求商余 3. 求平方根 4.求质数 5. 猜数字 1. 回文判断 输入一个数字&#xff0c;判断是否为回文&#xff0c;回文就是正着读和反着读都一样&#xff0c;如121是回文&#xff0c;123则不是。 import java.util.Scanner;public class DemoNew {publ…

LUA的使用

背景 LUA刚流行起来的时候&#xff0c;想学习一下LUA。就找了一款使用LUA脚本引擎的游戏玩。希望从中了解LUA的使用 结果 熟悉了LUA的同时也熟悉了这款游戏。 准备工作 使用detoured withdll注入LUAK.dll。LUAK.dll用于管理LUA环境 procedure PROCESS_ATTACH(); stdcall …

Python 实现自定义异常

在Python编程中&#xff0c;异常处理是保证程序健壮性的重要机制。Python提供了一些内置的异常类&#xff0c;如ValueError、TypeError、IndexError等&#xff0c;开发者可以直接使用这些类来捕获和处理程序运行中出现的各种错误。然而&#xff0c;某些场景下&#xff0c;内置的…

无人机使用材料与结构特点详解,看完这篇文你就懂了!!!

一、常用材料 无人机的常用材料主要包括机身材料&#xff08;结构材料和非结构材料&#xff09;、发动机材料和涂料&#xff0c;其中最主要的是机身结构材料和发动机材料。 机身结构材料 低速无人机&#xff1a;主要使用木材、塑料、玻璃纤维或碳纤维复合材料蜂窝夹层结构。…

SQL Server数据库查询常用语句汇总

这里&#xff0c;汇总了在使用SQL Server数据库的过程中经常会写的查询语句。 情形1 根据时间查询最新一条数据 &#xff08;dtime类型为datetime&#xff09; select top 1 名称 as name,列名1 as parname1,列名2 as parname2,dtime,col1,col2 from demo order by dtime …

【基础算法总结】多源 BFS_多源最短路问题

多源 BFS_多源最短路问题 1.多源 BFS_多源最短路问题2.01 矩阵3.飞地的数量4.地图中的最高点5.地图分析 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&…