集群:corosync+pacemaker实现web服务高可用

简介:

             实现web服务的高可用功能

 
前提
1本配置共有两个测试节点分别node1.magedu.com和node2.magedu.com相的IP地址分别为172.16.100.11和172.16.100.12
2集群服务为apache的httpd服务
3提供web服务的地址为172.16.100.1
4系统为rhel5.4
 
1、准备工作
 
为了配置一台Linux主机成为HA的节点通常需要做出如下的准备工作
注意首先要保证两台server的系统时间一致
 
1所有节点的主机名称和对应的IP地址解析服务可以正常工作且每个节点的主机名称需要跟"uname -n“命令的结果保持一致因此需要保证两个节点上的/etc/hosts文件均为下面的内容
172.16.100.11 node1.magedu.com node1
172.16.100.12 node2.magedu.com node2
 
为了使得重新启动系统后仍能保持如上的主机名称还分别需要在各节点执行类似如下的命令
 
Node1:
# sed -i 's@\(HOSTNAME=\).*@\1node1.magedu.com@g'  /etc/sysconfig/network
# hostname node1.magedu.com
 
Node2
# sed -i 's@\(HOSTNAME=\).*@\1node2.magedu.com@g' /etc/sysconfig/network
# hostname node2.magedu.com
 
2设定两个节点可以基于密钥进行ssh通信这可以通过类似如下的命令实现
Node1:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
 
Node2:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
 
2、安装如下软件包
libibverbs, librdmacm, lm_sensors, libtool-ltdl, openhpi-libs, openhpi, perl-TimeDate这些软件包用yum localinstall命令即可自动解决依赖关系
 
3、安装corosync和pacemaker首先下载所需要如下软件包至本地某专用目录这里为/root/cluster
cluster-glue
cluster-glue-libs
heartbeat
resource-agents
corosync
heartbeat-libs
pacemaker
corosynclib
libesmtp
pacemaker-libs
openais   这个两个包做如下的实验没有用可以不装
openaislib
 
下载地址http://clusterlabs.org/rpm/。请根据硬件平台及操作系统类型选择对应的软件包这里建议每个软件包都使用目前最新的版本。
 
使用如下命令安装
# cd /root/cluster
# yum -y --nogpgcheck localinstall *.rpm  (配置好yum源为系统光盘)
注意两个节点都要进行软件包的安装
 
4、配置corosync以下命令在node1.magedu.com上执行
 
# cd /etc/corosync
# cp corosync.conf.example corosync.conf
 
接着编辑corosync.conf添加如下内容
service {
ver:  0
name: pacemaker
use_mgmtd: yes
}
 
aisexec {
user: root
group:  root
}
 
并设定此配置文件中 bindnetaddr后面的IP地址为你的网卡所在网络的网络地址我们这里的两个节点在172.16.0.0网络因此这里将其设定为192.168.0.0如下
bindnetaddr: 172.16.0.0
 
生成节点间通信时用到的认证密钥文件
# corosync-keygen
 
将corosync和authkey复制至node2:
# scp -p corosync.conf authkey  node2:/etc/corosync/
 
分别为两个节点创建corosync生成的日志所在的目录
# mkdir /var/log/cluster
# ssh node2  'mkdir /var/log/cluster'
 
5、尝试启动以下命令在node1上执行
 
# /etc/init.d/corosync start
 
查看corosync引擎是否正常启动
# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Corosync Cluster Engine exiting with status 8 at main.c:1397.
Jun 14 19:03:49 node1 corosync[5120]:   [MAIN  ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:03:49 node1 corosync[5120]:   [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
 
查看初始化成员节点通知是否正常发出
# grep  TOTEM  /var/log/messages
Jun 14 19:03:49 node1 corosync[5120]:   [TOTEM ] Initializing transport (UDP/IP).
Jun 14 19:03:49 node1 corosync[5120]:   [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Jun 14 19:03:50 node1 corosync[5120]:   [TOTEM ] The network interface [172.16.100.11] is now up.
Jun 14 19:03:50 node1 corosync[5120]:   [TOTEM ] A processor joined or left the membership and a new membership was formed.
 
检查启动过程中是否有错误产生
# grep ERROR: /var/log/messages | grep -v unpack_resources
 
查看pacemaker是否正常启动
# grep pcmk_startup /var/log/messages
Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: CRM: Initialized
Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] Logging: Initialized pcmk_startup
Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Maximum core file size is: 4294967295
Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Service: 9
Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Local hostname: node1.magedu.com
 
如果上面命令执行均没有问题接着可以执行如下命令启动node2上的corosync
# ssh node2 -- /etc/init.d/corosync start
 
注意启动node2需要在node1上使用如上命令进行不要在node2节点上直接启动
 
使用如下命令查看集群节点的启动状态
# crm status
============
Last updated: Tue Jun 14 19:07:06 2011
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
0 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
从上面的信息可以看出两个节点都已经正常启动并且集群已经处于正常工作状态。
 
6、配置集群的工作属性禁用stonith
 
corosync默认启用了stonith而当前集群并没有相应的stonith设备因此此默认配置目前尚不可用这可以通过如下命令验正
 
# crm_verify -L 
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
  -V may provide more details
 
我们里可以通过如下命令先禁用stonith
# crm configure property stonith-enabled=false
 
使用如下命令查看当前的配置信息
# crm configure show
node node1.magedu.com
node node2.magedu.com
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false
从中可以看出stonith已经被禁用。
 
上面的crmcrm_verify命令是1.0后的版本的pacemaker提供的基于命令行的集群管理工具可以在集群中的任何一个节点上执行。
 
7、为集群添加集群资源
 
corosync支持heartbeatLSB和ocf等类型的资源代理目前较为常用的类型为LSB和OCF两类stonith类专为配置stonith设备而用
 
可以通过如下命令查看当前集群系统所支持的类型
 
# crm ra classes 
heartbeat
lsb
ocf / heartbeat pacemaker
stonith
 
如果想要查看某种类别下的所用资源代理的列表可以使用类似如下命令实现
# crm ra list lsb
# crm ra list ocf heartbeat
# crm ra list ocf pacemaker
# crm ra list stonith
 
# crm ra info [class:[provider:]]resource_agent
例如
# crm ra info ocf:heartbeat:IPaddr
 
8、接下来要创建的web集群创建一个IP地址资源以在通过集群提供web服务时使用这可以通过如下方式实现
 
语法
primitive <rsc> [<class>:[<provider>:]]<type>
          [params attr_list]
          [operations id_spec]
            [op op_type [<attribute>=<value>...] ...]
 
op_type :: start | stop | monitor
 
例子
 primitive apcfence stonith:apcsmart \
          params ttydev=/dev/ttyS0 hostlist="node1 node2" \
          op start timeout=60s \
          op monitor interval=30m timeout=60s
 
应用
# crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=172.16.100.1
 
通过如下的命令执行结果可以看出此资源已经在node1.magedu.com上启动
# crm status
============
Last updated: Tue Jun 14 19:31:05 2011
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node1.magedu.com
 
当然也可以在node1上执行ifconfig命令看到此地址已经在eth0的别名上生效
# ifconfig 
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:AA:DD:CF  
          inet addr:172.16.100.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:67 Base address:0x2000 
          
而后我们到node2上通过如下命令停止node1上的corosync服务
# ssh node1 -- /etc/init.d/corosync stop
 
查看集群工作状态
# crm status
============
Last updated: Tue Jun 14 19:37:23 2011
Stack: openais
Current DC: node2.magedu.com - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
 
Online: [ node2.magedu.com ]
OFFLINE: [ node1.magedu.com ]
 
上面的信息显示node1.magedu.com已经离线但资源WebIP却没能在node2.magedu.com上启动。这是因为此时的集群状态为"WITHOUT quorum"即已经失去了quorum此时集群服务本身已经不满足正常运行的条件这对于只有两节点的集群来讲是不合理的。因此我们可以通过如下的命令来修改忽略quorum不能满足的集群状态检查
 
# crm configure property no-quorum-policy=ignore
 
片刻之后集群就会在目前仍在运行中的节点node2上启动此资源了如下所示
# crm status
============
Last updated: Tue Jun 14 19:43:42 2011
Stack: openais
Current DC: node2.magedu.com - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
 
Online: [ node2.magedu.com ]
OFFLINE: [ node1.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node2.magedu.com
 
好了验正完成后我们正常启动node1.magedu.com:
# ssh node1 -- /etc/init.d/corosync start
查看状态
# crm status 
============
Last updated: Mon Apr 16 02:52:14 2012
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node1.magedu.com
 
 
正常启动node1.magedu.com后集群资源WebIP很可能会重新从node2.magedu.com转移回node1.magedu.com。资源的这种在节点间每一次的来回流动都会造成那段时间内其无法正常被访问所以我们有时候需要在资源因为节点故障转移到其它节点后即便原来的节点恢复正常也禁止资源再次流转回来。这可以通过定义资源的黏性(stickiness)来实现。在创建资源时或在创建资源后都可以指定指定资源黏性。
 
资源黏性值范围及其作用
0这是默认选项。资源放置在系统中的最适合位置。这意味着当负载能力“较好”或较差的节点变得可用时才转移资源。此选项的作用基本等同于自动故障回复只是资源可能会转移到非之前活动的节点上
大于0资源更愿意留在当前位置但是如果有更合适的节点可用时会移动。值越高表示资源越愿意留在当前位置
小于0资源更愿意移离当前位置。绝对值越高表示资源越愿意离开当前位置
INFINITY如果不是因节点不适合运行资源节点关机、节点待机、达到migration-threshold 或配置更改而强制资源转移资源总是留在当前位置。此选项的作用几乎等同于完全禁用自动故障回复
-INFINITY资源总是移离当前位置
 
我们这里可以通过以下方式为资源指定默认黏性值
# crm configure rsc_defaults resource-stickiness=100
这是我们把node1节点设为非活动节点
# crm node standby
查看状态
# crm status 
============
Last updated: Mon Apr 16 02:48:02 2012
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Node node1.magedu.com: standby
Online: [ node2.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node2.magedu.com
然后我们再让node1节点上线则资源并不会应用到node1上这就是粘性值的功能
# crm status 
============
Last updated: Mon Apr 16 02:48:10 2012
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node2.magedu.com
 
 
9、结合上面已经配置好的IP地址资源将此集群配置成为一个active/passive模型的webhttpd服务集群
 
为了将此集群启用为webhttpd服务器集群我们得先在各节点上安装httpd并配置其能在本地各自提供一个测试页面。
 
Node1:
# yum -y install httpd
# echo "<h1>Node1.magedu.com</h1>" > /var/www/html/index.html
 
Node2:
# yum -y install httpd
# echo "<h1>Node2.magedu.com</h1>" > /var/www/html/index.html
 
而后在各节点手动启动httpd服务并确认其可以正常提供服务。接着使用下面的命令停止httpd服务并确保其不会自动启动在两个节点各执行一遍
# /etc/init.d/httpd stop
# chkconfig httpd off
 
 
接下来我们将此httpd服务添加为集群资源。将httpd添加为集群资源有两处资源代理可用lsb和ocf:heartbeat为了简单起见我们这里使用lsb类型
 
首先可以使用如下命令查看lsb类型的httpd资源的语法格式
# crm ra info lsb:httpd
lsb:httpd
 
Apache is a World Wide Web server.  It is used to serve \
         HTML files and CGI.
 
Operations' defaults (advisory minimum):
 
    start         timeout=15
    stop          timeout=15
    status        timeout=15
    restart       timeout=15
    force-reload  timeout=15
    monitor       interval=15 timeout=15 start-delay=15
 
接下来新建资源WebSite
# crm configure primitive WebSite lsb:httpd
 
查看配置文件中生成的定义
# crm configure show
node node1.magedu.com
node node2.magedu.com
primitive WebIP ocf:heartbeat:IPaddr \
params ip="172.16.100.1"
primitive WebSite lsb:httpd
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
查看资源的启用状态
# crm status
============
Last updated: Tue Jun 14 19:57:31 2011
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
 WebIP (ocf::heartbeat:IPaddr): Started node1.magedu.com
 WebSite (lsb:httpd): Started node2.magedu.com
 
从上面的信息中可以看出WebIP和WebSite有可能会分别运行于两个节点上这对于通过此IP提供Web服务的应用来说是不成立的即此两者资源必须同时运行在某节点上。
 
由此可见即便集群拥有所有必需资源但它可能还无法进行正确处理。资源约束则用以指定在哪些群集节点上运行资源以何种顺序装载资源以及特定资源依赖于哪些其它资源。pacemaker共给我们提供了三种资源约束方法
1Resource Location资源位置定义资源可以、不可以或尽可能在哪些节点上运行
2Resource Collocation资源排列排列约束用以定义多个集群资源可以或不可以在某个节点上同时运行例如我们提供web服务则VIP和httpd必须运行在一个节点上我们可用通过collocation去定义
 
3Resource Order资源顺序顺序约束定义集群资源在节点上启动停止等的顺序
 
定义约束时还需要指定分数。各种分数是集群工作方式的重要组成部分。其实从迁移资源到决定在已降级集群中停止哪些资源的整个过程是通过以某种方式修改分数来实现的。分数按每个资源来计算资源分数为负的任何节点都无法运行该资源。在计算出资源分数后集群选择分数最高的节点。INFINITY无穷大目前定义为 1,000,000。加减无穷大遵循以下3个基本规则
1任何值 + 无穷大 = 无穷大
2任何值 - 无穷大 = -无穷大
3无穷大 - 无穷大 = -无穷大
 
定义资源约束时也可以指定每个约束的分数。分数表示指派给此资源约束的值。分数较高的约束先应用分数较低的约束后应用。通过使用不同的分数为既定资源创建更多位置约束可以指定资源要故障转移至的目标节点的顺序。
 
因此对于前述的WebIP和WebSite可能会运行于不同节点的问题可以通过以下命令来解决
# crm configure colocation website-with-ip INFINITY: WebSite WebIP
 
接着我们还得确保WebSite在某节点启动之前得先启动WebIP这可以使用如下命令实现
# crm configure order httpd-after-ip mandatory: WebIP WebSite
查看我们的配置
# crm configure show
node node1.magedu.com
node node2.magedu.com
primitive webip ocf:heartbeat:IPaddr \
params ip="172.16.100.1"
primitive website lsb:httpd
colocation website-with-ip inf: website webip
order httpd-after-ip inf: webip website
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
为了更清楚的看到我们定义的资源的启动次序,我们可用查看xml配置文件
# crm configure show xml
其中有这么几行
<constraints>
      <rsc_colocation id="website-with-ip" rsc="website" score="INFINITY" with-rsc="webip"/>
      <rsc_order first="webip" id="httpd-after-ip" score="INFINITY" then="website"/>
    </constraints>
此外由于HA集群本身并不强制每个节点的性能相同或相近所以某些时候我们可能希望在正常时服务总能在某个性能较强的节点上运行这可以通过位置约束来实现
# crm configure location WebSite_on_node1 WebSite inf: node1.magedu.com
然后查看配置信息
# crm configure show
会有如下行
location website_on_node1 website inf: node1.magedu.com
如果上面的操作你设置了粘性值当node1节点设置为非活动节点然后在转为活动节点资源是回转不到node1上的而如我们设置了此位置约束资源就会回来由于我们粘性值和约束是结合器作用而我们这里定义的位置约束至为inf即无穷大
 
在node1上进行操作
 
设置node1为非活动节点
# crm node standby
# crm status 
============
Last updated: Mon Apr 16 02:58:06 2012
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Node node1.magedu.com: standby
Online: [ node2.magedu.com ]
 
 webip (ocf::heartbeat:IPaddr): Started node2.magedu.com
 website (lsb:httpd): Started node2.magedu.com
使node1上线
# crm node online
# crm status 
============
Last updated: Mon Apr 16 02:58:13 2012
Stack: openais
Current DC: node2.magedu.com - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
2 Resources configured.
============
 
Online: [ node1.magedu.com node2.magedu.com ]
 
 webip (ocf::heartbeat:IPaddr): Started node1.magedu.com
 website (lsb:httpd): Started node1.magedu.com
 
 
补充知识
多播地址(multicast address)即组播地址是一组主机的标示符它已经加入到一个多播组中。在以太网中多播地址是一个48位的标示符命名了一组应该在这个网络中应用接收到一个分组的站点。在IPv4中它历史上被叫做D类地址一种类型的IP地址它的范围从224.0.0.0到239.255.255.255或等同的在224.0.0.0/4。在IPv6多播地址都有前缀ff00::/8。
 
多播是第一个字节的最低位为1的所有地址例如01-12-0f-00-00-02。广播地址是全1的48位地址也属于多播地址。但是广播又是多播中的特例就像是正方形属于长方形但是正方形有长方形没有的特点。









本文转自 leejia1989 51CTO博客原文链接http://blog.51cto.com/leejia/837024如需转载请自行联系原作者
目录
相关文章
|
1月前
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
48 9
|
1月前
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
152 69
|
15天前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
34 3
|
16天前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
16 1
|
22天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
1月前
|
XML JSON 安全
定义Web服务
【10月更文挑战第18天】定义Web服务
62 12
|
1月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
26 1
|
1月前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
1月前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
28 0
|
1月前
|
云安全 SQL 安全
数字时代下的Web应用程序安全:漏洞扫描服务的功能与优势
在当今这个数字化时代,Web应用程序不仅是企业与用户之间互动的桥梁,更是企业展示服务、传递价值的核心平台。然而,随着技术的不断进步,Web应用程序的复杂性也在不断增加,这为恶意攻击者提供了可乘之机。安全漏洞的频发,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等,严重威胁着企业的数据安全、服务稳定性乃至经济利益。在这样的背景下,漏洞扫描服务作为一道重要的安全防线,显得尤为重要。本文将深入探讨漏洞扫描服务在面对Web应用程序安全问题时,所具备的功能优势。
下一篇
无影云桌面