分布式部署2

Hyperledger Fabric 2.x 多机部署/分布式集群部署流程 硬件环境:CentOS7虚拟机一台,Ubuntu虚拟机一台,一共两台主机,有条件的小伙伴可以试一下在3台以上的主机部署。 软件环境: 名称 版本 Fabric 2.2.0 go 1.14.4 docker 19.03.11 docker-compose 1.12.0 1.IP与域名映射配置 本文通过静态IP的方式实现Hyperledger Fabric多机部署 通过修改/etc/hosts文件 添加IP地址与域名的映射 修改/etc/hosts文件指令 sudo vim /e 阅读详情

2.4 SSH、部署、脚本

服务器环境部署

Step-1: 创建登录密钥

$ ssh-keygen -t rsa  # 执行此命令

# 程序输出
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  # 确认密钥文件位置 (敲回车)
Enter passphrase (empty for no passphrase):  # 为密钥设置密码 (无需密码, 直接回车)
Enter same passphrase again:  # 确认密码 (再次回车)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WpGZKdaT3SbGlx+pNi6H5/SBNZXjk5C468y+4MeNKxs root@box
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|       . O ......|
|      o X =.=ooo.|
|     . . + +.oooo|
|        S  .+ ++ |
|       o   +.+ ..|
|      .  E+.O .  |
|        ..*X o . |
|         o=B+ .  |
+----[SHA256]-----+

Step-2: 复制公钥到远程服务器

  1. 本地打开 ~/.ssh/id_rsa.pub 文件, 复制全部文本内容
  2. ssh 登录到远程服务器, vim 打开 ~/.ssh/authorized_keys 文件
  3. 将复制的内容写入文件, 保存退出

Step-3: 关闭密码登录

  • 服务器现在能用密钥登录的全都是密钥登录了

密钥设置好以后,便可以关闭服务器的密码登录,保证服务器不会被暴力破解,增强安全性.

以后登录服务器只允许通过密钥登录。

  1. 登录服务器, 打开 /etc/ssh/sshd_config 文件
  2. 找到 PasswordAuthentication yes 这行设置,将 yes 改为 no
  3. 执行 service ssh restart 重启 SSH 服务

Step-4: 更新服务器软件,安装所需组件

# 更新源
$ sudo apt update -y
$ sudo apt upgrade -y
# 安装软件包
$ sudo apt install -y gcc make openssl git mysql-server zip p7zip apache2-utils sendmail
# 安装必要依赖
$ sudo apt install -y libbz2-dev libpcre3 libpcre3-dev libreadline-dev libsqlite3-dev libssl-dev zlib1g-dev

Step-5: 安装 Nginx、Redis

  1. 新方法

    1.  # ubuntu
       sudo apt-get update
       sudo apt-get install nginx redis-server
      
  2. 旧方法

    1. 浏览器中打开 nginx、redis 官网,找到其最新稳定版安装包的下载地址,右键点击复制
    2. ssh 登录到服务器
    3. 通过 wget 下载复制的软件包地址
    4. 解压、编译、安装
    $ cd nginx-1.14.2
    $ ./configure
    $ make
    $ make install
    

Step-6: 配置 nginx、redis、mysql 等组件

  • 按需求修改配置文件
    1. 先备份配置文件
    2. 小范围修改
    3. 出错回退

Step-7: 运行各组件

Step-8: 代码上传、运行

  1. 登录服务器, 创建好项目保存路径

    $ cd /opt/
    $ mkdir -p swiper/logs
    
  2. 进入项目目录,执行如下操作

    $ rsync -crvP --exclude={.venv,.git,__pycache__,logs}  ./ root@X.X.X.X:/opt/swiper/
    
  3. 运行

    $ gunicorn -c swiper/gunicorn-config.py swiper.wsgi
    
  4. 面试题:

    1. 生产环境中的django程序是如何运行的?
    2. 写一个shell脚本,检查/dev/sda1磁盘的空间占用,超过80%,就把/var/logs/jenkins目录下的文件删除
      1. 先查出磁盘空间占用:
      2. 找出30天前的文件删除

Shell 脚本编程

首行

脚本文件第一行通过注释的方式指明执行脚本的程序

常见方式有 #!/bin/bash 或 #!/usr/bin/env bash

变量

# 变量定义: 等号前后没有空格
a=12345678

# 使用变量: 变量名前面加上 $ 符
echo "----$a----"
printf "===>$a<===\n"

# 定义当前Shell下的全局变量
export ABC=9876543210123456789

# 定义完后, 在终端里用 source 加载脚本
source ./test.sh

常用的系统环境变量

$PATH: 可执行文件目录
$PWD: 当前目录
$HOME: 家目录

分支控制语句: if

if [[ $a == "12345678" ]]; then
    echo 'this is a arg'
elif [ -d $0 ]; then
    echo 'this is a dir'
elif [ -f $0 ]; then
    echo 'this is a file'
else
    echo '98765432'
fi

循环控制语句: for

# 从1到10显示数字
for i in $(seq 1 10)
do
    echo "num: $i"
done

函数

[function ]foo() {
    echo "Hello BJ-1813"
    for f in `ls ../`
    do
        echo $f
    done
}

# 函数的使用,不需要小括号
foo 

函数中使用参数

bar() {
    echo "执行者是 $0"
    echo "参数数量是 $#"

    if [ -d $1 ]; then  # 检查传入的第一个参数是否是文件夹
        for f in `ls $1`
        do
            echo $f
        done
    elif [ -f $1 ]; then
        echo 'This is a file: $1'  # 单引号内的变量不会被识别
        echo "This is a file: $1"  # 如果不是文件夹,直接显示文件名
    else
        echo 'not valid'  # 前面都不匹配显示默认语句
    fi
}

开发服务器部署脚本

  • 系统部署脚本
    • 将前述步骤通过脚本方式组织起来
    • 可通过参数方式,选择执行独立步骤
  • 代码发布脚本
    • 上传脚本到服务器
    • 上传完成后,重启服务器
  • 代码发布流程
    * 发布服务器:
    * checkout 出来一个 master 上的稳定可发布分支
    * 用 git 命令清理 .git
    * 打包
    * 把压缩包复制到各个 application 服务器上:scp / rsync / http
    * application
    * 拿到压缩包
    * 解压
    * 简单做法:
    * 把新代码覆盖旧的版本
    * 复杂一点:
    * 把旧代码复制一份,按日期或版本或tag起好名字,备用;
    * 然后把新代码覆盖旧代码,预备出问题的回滚
    * 用新目录放新代码,修改gunicorn配置,然后平滑重启gunicorn服务(新的请求用新代码服务,旧代码的进行运行完后就自行销毁)
    * 写成脚本(就是代码发布的脚本)
  • 程序启动脚本
  • gunicorn启动脚本
  • 程序停止脚本
    • 写好脚本
  • 程序重启脚本
    • 重启过程服务不可中断
    • 重启
      • nginx: 不间断重启: kill -HUP [进程 ID]
        • 新方式:sudo service nginx restart
      • gunicorn
        *
      • mysql:
        • sudo service mysql restart
      • redis:
        • sudo service redis restart
    • 大型分布式服务器不间断重启:
      • 禁止一次性重启全部机器
      • 一次重启集群中的一部分
      • 重启后的服务器没有问题后,再重启第二部分
      • 依次重复上述步骤,直至全部重启完成
      • facebook服务发布层级:
        • 7层

多台服务器的部署方法

  • 小学生:SSH 手动部署
  • 中学生:SSH + Shell 脚本
  • 大学生:Ansible + 部署文件 / puppet / salt
  • 研究生:app 容器管理:Docker 部署:架构
  • 博士生:K8S:kubernets app集群管理:架构

观察者非特殊原理

  • 后端技术Linux MySQL Python等已经稳定存在了二三十年,从观察者非特殊原理出发,还有大概率能存在几十年
【Flask】Nginx / Gunicorn入门:部署你的Flask项目 什么是Nginx? 参考:Nginx入门 什么是反向代理呢? 我们很多人应该都用过淘宝,要知道每天同时连接到淘宝网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署; 也就是通过部署多台服务器来解决访问人数限制的问题;淘宝网站中大部分功能也是直接使用nginx进行反向代理实现的 上图表示的是全国各地的用户在淘宝客户端发出请求,经过... 阅读详情

相关推荐

Nebula Graph 2.0分布式安装部署

最讨厌安装一堆乱七八糟的东西 因为已经安装过1.0了(Nebula Graph安装_a5276957的博客-优快云博客),现在简单写下安装2.0分布式版的。1.0很多功能没有。 环境:Linux 2.0手册:https://docs.nebula-graph.io/2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb/ 备注:如果已经下载了1

a5276957的博客 1205

Flask 高并发部署方案详细教程!

点击上方“Python编程与实战”,选择“置顶公众号”第一时间获取 Python 技术干货!阅读文本大概需要 10分钟。前言虽然标题写的是 Flask,但是下面这个教程不仅仅只适用于 ...

Python编程与实战的博客 2562

Hyperledger Fabric 2.x 生产环境的分布式部署、性能测试与应用

安装docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 加入用户组 sudo groupadd docker sudo gpasswd -a ${USER} docker sudo service docker restart 退出当前用户重登一下 sudo wget -P /usr/local/bin https://github.com/docker/compose/releases/download/1

GniLAY1022的博客 9884

flask部署

【代码】flask部署。

m0_69965569的博客 4317

[模型部署] 模型分布式服务部署方案:grpc,flask;docker

Git Repo:https://github.com/MachineLP/QDServing

MachineLP的专栏 1620

XXL-JOB 2.2.0 分布式任务调度平台部署教程

部署工具是将软件应用从开发环境迁移到生产环境的关键一环。在复杂的IT架构中,自动化部署工具能够减少人为错误,提高部署效率,保证部署流程的一致性。在现代敏捷开发和持续集成/持续部署(CI/CD)环境中,部署工具的作用更加凸显。

weixin_42600128的博客 975

flask部署的几种常见方式,部署流程及问题总结

安装必要的软件和依赖:1. 首先,在服务器上安装 Python 和 pip。根据操作系统的不同,可以使用以下命令安装:2. 安装 Flask 框架和其他需要的库。编写 Flask 应用:1. 创建一个 Python 文件,例如 `app.py`,并编写 Flask 应用的代码。```pythonapp.run()```2. 保存并退出文件。3. 测试 Flask 应用:在终端中运行 Flask 应用,以确保应用可以在本地运行。

2302_77595648的博客 5683

【黑马点评】项目知识点及面经整理

【黑马点评】项目知识点及面经整理

m0_52031708的博客 6605

一、Hadoop 2.x 分布式安装部署

一、Hadoop 2.x 分布式安装部署

【人工智能】王小草的博客 2465

电磁场数值分析作业(西电)共5次【2021】

文章目录作业1作业2作业3作业4作业5 作业1 一个二维正方形(边长a=10mm)的静电场区域,电位边界条件如图所示(单位:V),求区域内的电位分布。要求用超松弛迭代法求解差分方程组进行计算。 clc clear close all hx=11; hy=11; v1=zeros(hy,hx); v1(hy,:)=ones(1,hx)*100; v1(1,:)=ones(1,hx)*50; for i=1:hy v1(i,1)=0; v1(i,hx)=100; end w=2/(1+

薛定谔的壳的博客 5074

深入浅出DDR系列(二)--DDR工作原理

学习完了DDR的基本组成和硬件结构原理之后,从整体上了解了DDR的特性和静态图,包括原理、管脚图等。那么本章就要从动态的角度来分析时序结构,包括read/write的整个过程到数据返回发生了什么,其中包括以下内容 DDR是如何完成Read、Write 等的操作 DDR的基本命令 DDR的时序参数 DDR的性能分析 1. DRAM基本组成 对于DRAM,其主要由行和列组成,每一个bit中都是由类似右下图的类晶体管的结构组成,对于sdram的数据,可以通过控制column和row就可以访问sd

奇小葩 3万+

YashanDB分布式部署(下)DN节点1主2备部署

本文以典型规格(3台服务器,1个MN组、2个CN、1个DN组,DN组和MN组均为1主2备)为例,介绍分布式部署形态的安装步骤。执行安装部署前,请以安装用户(yashan)登录192.168.1.2服务器,并进入/home/yashan/install安装目录。

cod0410的博客 627

嵌入式硬件实战:RC、LC与RL滤波电路的设计与选型指南

本文深入探讨了嵌入式系统中RC、LC与RL滤波电路的设计与选型策略。通过生活化比喻和实战案例,详细解析了三种滤波电路的工作原理、应用场景及工程注意事项,帮助工程师根据电流大小、频率特征和成本预算选择最优方案,提升嵌入式硬件设计的稳定性和抗干扰能力。

kiwi8的博客 284

Hbase2.2.4分布式部署

Hbase2.2.4分布式部署 HDFS配置: hdfs node: ambari: cd /usr/hdp/2.6.5.0-292/hadoop/conf scp core-site.xml hdfs-site.xml root@master:/home/hbase-2.2.4 ssh hdfs@hdfs_node_ip hdfs 权限更改: hdfs dfs -ls / hdf...

ty-boy的博客 2010

esp32c6 开发实战:低功耗蓝牙(BLE)开发

蓝牙栈在此程序流程中已经启动并运行,但是应用程序的功能尚未定义。功能的定义是通过响应事件来实现的,当其他设备尝试读取或写入参数以及建立连接时就会触发事件回调函数处理。BT控制器在控制器端实现主机控制器接口(HCI),链路层(LL)和物理层(PHY)。BT控制器对用户应用程序不可见,并处理BLE堆栈的较低层。蓝牙堆栈(Bluedroid stack)定义了经典蓝牙(BT Classic)和低功耗蓝牙(BLE)的通用定义和API。的判断)等对于启动低功耗蓝牙来说不重要的代码,函数初始化和启用BT控制器。

月入鱼饵的博客 2742

手把手教你学SINULINK-- --Linear Transformer 模块

模块是 Simulink 中用于模拟理想变压器行为的重要工具。通过本文的详细介绍,希望你能更好地理解和使用模块。

MHD0815的博客 2614

qwen2.5-vl多机多卡分布式部署

记录一下工作中进行多机多卡部署qwen2.5-vl多模态大模型踩过的坑第一个天坑就是官方提供的镜像qwenllm/qwenvl:2.5-cu121有问题,在titan显卡会抛出cuda error:no kernel image is availabe for execution on the device. 这是cuda内核与GPU不兼容的问题,可是手动制作的其他cuda12镜像就能跑。

weixin_42479327的博客 5927

cdk&java | 绘制含有丰富信息的化学反应(适合论文、网页、PPT)

package org.example; import org.openscience.cdk.DefaultChemObjectBuilder; import org.openscience.cdk.depict.DepictionGenerator; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IReaction; import org.openscience.cdk.

ASKCOS博客 897

1. Hyperledger Fabric v2.0手动进行分布式部署

Hyperledger Fabric v2.0 入门搭建 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Hyperledger Fabric v2.0 入门搭建前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了

weixin_41540016的博客 2160

利用 RSAU_LOG_API 把 SAP 安全审核日志接入企业 SIEM 的完整指南

在 SAP 世界里,安全审核日志(Security Audit Log,简称 SAL)是审计和合规的核心基础设施之一。系统会在后台把安全相关的关键事件记录下来,比如:(用户登录与登录失败用户锁定、解锁权限对象或角色变更远程调用(RFC)相关活动关键事务码的启动程序直接执行、批处理作业相关的敏感操作传统 ABAP 系统里,这些日志会写到本地应用服务器上的审计文件中(背后对应类似表RSAUENTR2的结构),包含事件标识、客户端、用户、终端、事务码、时间戳等信息。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 161

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hadoop2.7.2分布式部署3(安装部署hadoop分布式)

Hadoop2.7.2分布式部署3(安装部署hadoop分布式)

fxsdbt520的博客 960

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

k8s 1.28.2 集群部署 MinIO 分布式集群

MinIO 官网MinIO 官方 linux 的部署文档以下内容从官方翻译MinIO 是一款软件定义的高性能分布式对象存储服务器所有 MinIO 部署都实施纠删码后端MinIO 有以下三种拓扑SNSD或者Standalone单节点驱动器除了底层存储卷实现的范围之外,它不会提供额外的可靠性或可用性。这些部署最适合本地测试和评估,或者没有可用性或性能要求的小型数据工作负载。SNMD或者单节点多驱动器性能、规模和容量要求较低的工作负载。

以梦为马|越骑越傻 3593

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

突破TensorFlow 2.x部署瓶颈:从模型序列化到分布式训练的全栈实战指南

当你训练出一个准确率达98%的图像分类模型,却在部署时遭遇"TensorFlow Serving启动失败"、"gRPC请求超时"、"分布式训练效率低下"等问题时——恭喜,你不是一个人。根据TensorFlow官方论坛2024年数据,73%的开发者在模型从实验环境迁移到生产环境时会遇到至少3个以上技术障碍。本文将系统解决这些痛点,读完你将获得: - 3种模型序列化方案的零故障实施指南 - REST...

gitblog_00662的博客 1063

Hadoop2.x分布式安装以及HA部署

Hadoop2.x分布式部署 1、三台电脑,ip、hostname,配置如下表 192.168.217.131 192.168.217.132 192.168.217.133 hadoop-senior hadoop-senior02    hadoop-senior03 1.5G 1 G 1G 1 CPU 1 CPU 1

小江专栏 1773

使用DaoCloud部署Hadoop2.7.2分布式集群

使用DaoCloud

lucyLee的博客 515

Hadoop-2.5.1 分布式部署,Centos7

由于现在需要实际的Hadoop分布式环境以及我当初的一篇伪分布的环境搭建文章不够细致,所以在这里从新写一篇 环境准备: Centos7部署节点: 192.168.192.11 master 192.168.192.12 slave1 192.168.192.13 slave2以下配置内容,大部分在master节点主机上 一、Centos7 环境配置 1、修改主机名$hostna

大大大水牛 625
上一篇: 项目部署
下一篇: 负载均衡与服务器架构
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值