
成功案例分享——钉钉 钉钉背后的技术 现有的技术支持 SaaS(Software-as-a-Service)平台技术 SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。 ECS 云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了企业采购IT硬件的前期准备,实现计算资源的即开即用和弹性伸缩。 OSS 阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。 OTS OTS是构建在阿里云飞天分布式系统之上的 NoSQL 数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,达到规模的无缝扩展。OTS 向应用程序屏蔽底层硬件平台的故障和错误,能自动从各类错误中快速恢复,提供非常高的服务可用性。OTS 管理的数据全部存储在 SSD 中并具有多个备份,提供了快速的访问性能和极高的数据可靠性。用户在使用 OTS 服务时,只需要按照预留和使用的资源进行付费,无需关心数据库的软硬件升级维护、集群缩容扩容等复杂问题。 RDS 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle数据库)和MariaDB TX引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 未来的考虑 Open Search 开放搜索服务OpenSearch (简称OpenSearch )基于阿里巴巴自主研发的大规模分布式搜索引擎平台(该平台承载了阿里集团所有主要搜索业务)搭建而成。其主要为解决用户结构化数据搜索需求的托管服务,支持数据结构、搜索排序、数据处理自由定制。 开放搜索服务主要为的网站或应用程序提供简单、低成本、稳定、高效的搜索解决方案。 使用阿里云为钉钉带来的价值 数据安全性 整体服务的稳定性 架构更易水平扩容 可靠的安全防护,不需要担心主机被第三方破解登录,可以将更多的时间投入到产品本身
背景知识 Leanote是一款在线的云笔记应用,有如下特点: 支持网页、PC、手机APP客户端和微信版,随时记录,方便分享,支持语音,图片输入。 代码高亮,涵盖所有主流语言的代码高亮,随心所欲在Leanote里写代码,记知识。 Markdown 编辑器,实时同步预览。 专业数学公式编辑,像Word和Latex能编辑数学公式。 支持创建思维脑图,将散乱的想法以树状信息分层展示。 详细历史纪录,每次保存都在后端备份,轻松查找,一键恢复。 实时同步云端。 开始实验 MongoDB安装 MongoDB简介 MongoDB是一个基于分布式文件存储的高性能数据库,介于关系数据库和非关系数据库之间 它支持的数据结构非常松散是类似于json和bson格式,因此可以存储比较复杂的数据类型 Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 开始安装MongoDB yum -y install mongodb mongodb-server.x86_64 mariadb-devel.i686 上述阿里云提供的方法并不work,报如下错误 那好吧,只能去问度娘了,这里我参考了这篇博客来安装MongoDB。 启动并查看MongoDB的状态 # 启动MongoDB systemctl start mongod.service # 查看MongoDB的状态 systemctl status mongod.service 安装Leanote 下载Leanote二进制安装包 wget https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz 选择 上面 这种方法来进行安装时,下载速度最高只有20kb/s,以这种速度,还没下好,资源就释放了,那可不好玩了。因此,我提前在本地下载Leanote二进制安装包,然后使用FTP协议将文件上传至ECS实例上。 解压安装包 tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz 编辑文件leanote/conf/app.conf,在文件中找到app.secret项,将该项的值改为任意字符串(如不修改将会有安全风险) vim leanote/conf/app.conf 初始化数据库 mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/ 启动服务 nohup bash /root/leanote/bin/run.sh > /root/leanote/run.log 2>&1 & 访问云笔记 在浏览器中访问http://<ECS公网地址>:9000,请将<ECS公网地址>替换为左侧资源栏中的ECS公网IP地址。默认管理用户为admin,密码为abc123。登录成功后如下图所示。
背景知识 PolarDB数据库简介 PolarDB是阿里云自研的下一代关系型云数据库,有三个独立的引擎,分别可以100%兼容MySQL、100%兼容PostgreSQL、高度兼容Oracle语法。 PolarDB采用存储和计算分离的架构,所有计算节点共享一份数据,提供分钟级的配置升降级、秒级的故障恢复、全局数据一致性和免费的数据备份容灾服务。 集群架构,计算与存储分离 PolarDB采用多节点集群的架构,集群中有一个Writer节点(主节点)和多个Reader节点(读节点),各节点通过分布式文件系统(PolarFileSystem)共享底层的存储(PolarStore) 读写分离 当应用程序使用集群地址时,PolarDB MySQL/PostgreSQL通过内部的代理层(Proxy)对外提供服务,应用程序的请求都先经过代理,然后才访问到数据库节点。代理层不仅可以做安全认证和保护,还可以解析SQL,把写操作(例如事务、UPDATE、INSERT、DELETE、DDL等)发送到主节点,把读操作(例如SELECT)均衡地分发到多个只读节点,实现自动的读写分离。对于应用程序来说,就像使用一个单点的MySQL数据库一样简单。内部的代理层(Proxy)后续将支持PolarDB兼容Oracle语法引擎。 产品优势 容量大 高性价比 分钟级弹性 读一致性 毫秒级延迟 无锁备份 开始实验 创建PolarDB数据库账号 登入阿里云管理控制台创建数据库账号,类型为普通账号 创建数据库,为新创建的账户授予读写权限,并设置数据库白名单 安装LAMP环境 在ECS服务器上,执行以下命令安装Apache服务及其扩展包 yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql 安装PHP yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap 安装MySQL并启动 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server systemctl start mysqld 搭建门户网站 在ECS服务器上,执行以下命令,安装Git。 systemctl restart httpd 在ECS服务器上,执行以下命令下载PbootCMS源码文件。 cd ~ && git clone https://gitee.com/hnaoyun/PbootCMS.git 执行以下命令将安装包拷贝到Apache的wwwroot目录下。 cp -r PbootCMS/* /var/www/html/ 执行以下命令修改站点根目录文件权限。 chmod -R a+w /var/www/html 向数据库中导入CMS的初始数据。 sql_file="/var/www/html/static/backup/sql/"$(ls /var/www/html/static/backup/sql/) && mysql -h数据库连接地址 -utest_user -pPassword1213 -Dpbootcms < $sql_file 数据库连接地址参见集群详情页面下方链接地址板块。 test_user为步骤二中创建的数据库账号。 Password1213步骤二中创建的数据库密码。 执行以下命令,修改CMS系统数据库配置。 cat > /var/www/html/config/database.php << EOF <?php return array( 'database' => array( 'type' => 'mysqli', // 数据库连接驱动类型: mysqli,sqlite,pdo_mysql,pdo_sqlite 'host' => '数据库连接地址', // PolarDB数据库链接地址 'user' => 'test_user', // PolarDB数据库的用户名 'passwd' => 'Password1213', // PolarDB数据库的密码 'port' => '3306', // 数据库端口 'dbname' => 'pbootcms' //数据库名称 ) ); EOF 配置ECS安全组 重启 Apache服务,访问程序。
SLB负载均衡实践 背景知识 什么是负载均衡 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能力,增强了应用的可用性。 组成部分 负载均衡实例 (Server Load Balancer instances) 一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。 监听 (Listeners) 监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。 后端服务器(Backend Servers) 一组接收前端请求的ECS实例。您可以单独添加ECS实例到后端服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。 特点 负载均衡服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic Compute Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。 负载均衡服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。 负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。 产品优势 高可用 采用全冗余设计,无单点,支持同城容灾。搭配DNS可实现跨地域容灾,可用性高达99.95%。 根据应用负载进行弹性扩容,在流量波动情况下不中断对外服务。 可扩展 您可以根据业务的需要,随时增加或减少后端服务器的数量,扩展应用的服务能力。 低成本 与传统硬件负载均衡系统高投入相比,成本可下降60%。 安全 结合云盾,可提供5Gbps的防DDoS攻击能力。 高并发 集群支持亿级并发连接,单实例提供千万级并发能力。 开始实验 云服务器状态确认 云服务器ECS-1 Tips:正常情况下不会显示 后端服务器IP,此处是为了观察比较的便利性而设计的。 云服务器ECS-2 观察结果 比较两台ECS的访问结果,发现部署的网站内容相同,只是显示的后端服务器IP不同。 tips:在真实场景下,负载均衡后端的服务器中部署的应用都是一致的。这不难理解,在解决高并发带来的难题的同时,也要保证不同用户得到的服务是一样的。 负载均衡配置 登录阿里云管理控制台 点击左侧导航栏的 产品与服务 ,下拉菜单中,在 弹性计算 条目下选择 负载均衡 点击左侧的 实例管理 ,然后打开实验提供的实例,在实例列表页面,点击目标实例右侧的 点我开始配置 通过负载均衡业务配置向导,配置负载均衡的 监听端口、后端服务器 和 健康检查 负载均衡协议:选择 HTTP 监听端口:设为 80 高级配置保持默认 在 后端服务器 页面,监听请求转发至 默认服务器组,在已添加服务器处点击 继续添加 在弹出的待添加服务器页面,在预先配置好的两台云服务器前打勾选择,然后点击下一步,之后再点击 添加; 在后端服务器界面的已添加服务器列表中,可以看到新增的两台云服务器,分别将 端口 设置为 80,并点击 下一步 在 健康检查 配置中,开启健康检查按钮为绿色 开启状态,点击 下一步。 配置审核 页面,确认上述配置操作正确,点击 提交;出现如下界面,提示配置成功后,点击 知道了; 此时,页面将显示一个状态为 运行中 的负载均衡监听实例,后端服务器组已添加完成两台ECS服务器,且 健康检查 的状态为 正常。 负载均衡检验 此时,两台后端服务器的权重比例相同,因此在刷新操作下后端服务器IP 是在两个云服务器的 内网地址 间轮流更换。 设置两个实例的 权重 分别为 30 ,90 。此时,用户通过负载均衡访问的时候,1/4 的用户请求发送到一台后端服务器中,3/4 的请求发送到另一台后端服务器中。 结果证明:负载均衡会将用户的请求发送到后端不同的服务器进行处理。这样,可以减轻单台服务器的负载压力,从而确保业务的持续性 开启负载均衡的 会话保持 功能,再次在浏览器中输入 负载均衡 的 IP地址 ,多次刷新,发现在会话保持的超时时间内请求只会分发到某一台 ECS 上,时间超出后,重新按照权重比例分发。 我们关闭开启 会话保持 的那台ECS 【监听】 页面,也出现 异常 提示,再次刷新浏览器中 负载均衡 的 IP地址 ,此时,请求发送到 健康检查状态 为 正常 的ECS上。 结果证明,当某一台 ECS 出现异常后,负载均衡会自动将请求发送到健康检查状态正常的 ECS 上。
Day01 背景知识 FTP概述 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。 同大多数Internet服务一样,FTP也是一个客户/服务器系统 FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。 FTP的应用 在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。 由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 FTP的主动模式与被动模式 主动模式 客户端先与服务器的 TCP 21 端口建立连接,用于传输控制信息(PORT指令)。 客户端在需要接受信息时,通过TCP 21 端口发送PORT指令给服务器(PORT命令包含了客户端用什么端口接收数据)。 服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 被动模式 客户端先与服务器的 TCP 21 端口建立连接,用于传输控制信息(Pasv指令)。 客户端在需要接受信息时,通过TCP 21 端口发送Pasv指令给服务器。 服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求 客户端连接此端口,客户端与服务器通过此通道传输数据 两者对比 当客户端主动时,服务器就容易管理 → 用 TCP 21端口传输控制信息 ,TCP 20端口传输数据 当客户端被动时,服务器就难以管理 → 用 TCP 21端口传输控制信息, 高端端口 传输数据 FTP服务器之 vsftpd vsftpd(very secure FTP daemon)是一款在Linux发行版中最受推崇的FTP服务器。 它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面 是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。 比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 开始实验 连接ECS服务器的几种方式 系统自带的终端工具 putty, XShell(推荐) 安装与配置vsftpd 修改配置文件vsftpd.conf 时,解开anon_upload_enable=YES注释的时候,可以借助vim的查找功能进行查找。 即:在vim的normal模式下输入 '/' + 'keyword' + 回车 其余部分实验教程已经十分详细,便不再赘述。 客户端测试 直接使用Windows下的资源管理器进行测试 此时,可能会显示“请检查权限的提示”。解决方案: 登录成功后,因为文件夹/var/ftp/test必定为空 在本地创建test.txt文件直接拖入 在服务器查看文件是否成功上传
2020年12月
2020年11月