公司某网站需要使用 Windows 服务器,在维护期间,需要更新补丁。然后,问题就来了…
1 )更新补丁后需要重启服务器!天啊,这是服务器,不是 PC,可以随便重启的吗?然而即使重启了,仍然提示某些补丁更新失败!!!
2 )重启后,所有服务需要有先后启动顺序。然而,并不能像 Linux 那样直接修改 service 的启动顺序。至于怎么设置启动顺序,或者依赖关系,还不知道…
天啊,大家用 Windows 服务器都没遇到这些问题的吗?我们用 CentOS 跑的网站,直到网站关闭,都没重启过。
1
geelaw 2017-08-12 16:03:42 +08:00
你这问得很没逻辑啊。
第一个问题的第一部分:所以服务器不会自动重启。 第一个问题的第二部分:重启为什么一定要安装成功?重启才能尝试安装,造成更新失败的原因千千万,并不是重启就能解决的。 第二个问题:当你启动一个依赖未启动服务的服务时,其依赖项会启动,除非是禁用状态。难道 dependency resolution 不是自动完成的? |
2
a1044634486 2017-08-12 16:11:44 +08:00
说的跟 centos 打补丁不用重启一样。。
|
3
hotsnow 2017-08-12 16:16:16 +08:00
服务器为啥不能随便重启?维护窗口是干嘛用的 :p
|
4
gdtv 2017-08-12 16:41:04 +08:00
CentOS 为什么不用重启? 因为不会自动更新。
你将 windows 设置为永久不自动更新,也能不重启。 |
5
jarlyyn 2017-08-12 16:46:35 +08:00 5
所以啊楼主,v2 现在强行回答的这么多,痛苦不痛苦?
不是所有人都知道,linux 的话大部分文件可以直接替换,大部分更新不需要重启。而 windows 正在运行中的程序文件往往是不能写入的。所以 linux 是更新玩后再重启,而 windows 一般是先关机 /重启再更新。 也不是所有人都知道,linux 只有个很小的内核,而且服务器用的发行版一般会锁定内核大版本,大部分情况下是不需重启的。windows 的内核包含的东西太多,所以很多更新都要需要重启。 至于这些人为什么要答呢?我也不知道-_____- |
6
zro 2017-08-12 16:49:00 +08:00
用 Linux 的逻辑来维护 Windows 当然呕血,反过来也一样。。。
如果你要某些服务有先后顺序启动,就先把服务都设为手动,然后写个 bat 挂到启动项来完成 |
7
wendaoshenyang 2017-08-12 16:52:22 +08:00 via Android
那些说关 windows 更新的,不怕漏洞吗😂😂😂😂
|
8
fox0001 OP |
9
Mogugugugu 2017-08-12 17:04:43 +08:00
+1 CentOS 习惯了,换 Win 真受不了...
|
10
fox0001 OP @a1044634486 #2 上一个项目用 CentOS,确实没认真更新过补丁。不过家里的树莓派,一直用 apt 更新,都没重启过
|
13
fox0001 OP @jarlyyn #5 没事,就是要找个地方喷一下。不发出来,憋在心底更痛苦! v2 是个吹水的好地方。在这发帖,就不用那么认真,大家聊聊就好~
|
15
chih758 2017-08-12 17:22:54 +08:00 via Android
Windows 不但会自动帮你更新,还会自动帮你重启呢!我第一次遇到的时候那个惊讶。。
Linux 有内核热补丁技术,可以不重启对内核打补丁,用户态的升级更不用重启了 |
16
geelaw 2017-08-12 17:23:31 +08:00 via iPhone
@fox0001 那就等下次,或者就再次重启,在有限的时间内倒腾好。
一个服务(我假设你说的是 services.msc 管理的那些)应该自己把自己安装进去的时候乖乖设置好依赖,用户不需要设置依赖关系。 |
17
ETiV 2017-08-12 17:26:44 +08:00 via iPhone
Windows 服务器做那么好,哪有 Linux 服务器的市场份额
|
18
oott123 2017-08-12 18:01:27 +08:00 via Android
遇到安全问题,自动打补丁自动重启不是挺好的?多省心。
服务依赖是注册服务的时候配置的,不是你手动折腾的。 以及…你可以起个虚拟机,当 Linux 用,大概会好点。 |
19
fox0001 OP @oott123 #18
1 )这是 Web 服务器,不能随便重启! 2 )装虚拟机再装 Linux,多么浪费服务器资源啊! 3 )很多事情都不能在注册服务时就订好的。例如一开始用 IIS 做前端,后来换成 Apache,那所有的 Tomcat 服务器都因为要改依赖而重装?这事情比重启服务器折腾多了 经验教训告诉我,不能以使用 PC 的经验来管理服务器… |
20
flyz 2017-08-12 18:24:29 +08:00 via Android
第一个问题不知道怎么回答,
第二个可以用 vbs 或者 bat 延迟解决,我正在用。 |
21
oott123 2017-08-12 18:25:20 +08:00 via Android
Web 服务器为什么不可以随便重启?担心服务中断的话,只要不同时重启所有服务器不就可以了吗?
重启都不能重启,怎么又能随便重装服务呢? |
23
oott123 2017-08-12 18:33:36 +08:00
|
24
jarlyyn 2017-08-12 18:34:38 +08:00 via Android
|
25
geelaw 2017-08-12 18:38:49 +08:00 via iPhone
|
27
justtery 2017-08-12 18:48:17 +08:00 via Android
我:网管,电脑不好使了,网管:重启一下试试。我:还是不好使啊!网管:换台机器
|
29
fox0001 OP @hotsnow #26 面向全球的 Web 服务,所以基本没有凌晨重启的时机。不过,遇到要更新系统,就只能挑个折中的时间去重启了
|
30
wevsty 2017-08-12 19:24:42 +08:00
Windows 下面的更新确实招人烦,更新必须重启还是设计的机制决定的,只能说这种设计有利也有弊吧。
服务启动顺序的问题其实是开发或者安装的时候就应该设计好的,系统提供了这个功能,正常情况下应该是不需要用户来考虑的。如果这里开发的不正确,用楼上提供的 bat,vbs 之类的方法其实也就 OK 了。 |
31
fox0001 OP @oott123 #23 这里的依赖,只是 service 启动顺序的意思。例如 Apache 启动前,要先启动 tomcat,tomcat 启动前要先启动数据库,之类。Windows 不能简单更改启动顺序,所以考虑用 service 依赖来解决
|
33
MrMario 2017-08-12 19:35:20 +08:00 via iPhone
我们现在是这么处理的:部署 wsus,每月补丁周二发布后审批补丁,通过组策略配置周末重启更新。如果业务不能中断,那么前面放台负载均衡,然后分批安装、重启,通过部署的 agent、wsus 和日志检测安装和重启情况。安装失败不要紧,下一个维护周期继续打。
|
34
7654 2017-08-12 19:43:58 +08:00
Windows 服务器不自动重启在 Win10 面前终结了
|
37
anyele 2017-08-12 20:25:49 +08:00 via Android
你 mono 放 Linux 上就可以了
|
38
akira 2017-08-12 20:29:07 +08:00
你们的网站就跑在一台服务器上面的?
|
39
pq 2017-08-12 20:36:34 +08:00
所以,windows 服务器一般都是企业内部使用的,很少有人放到互联网上用。
|
43
swsh007 2017-08-12 20:55:21 +08:00 via Android
这不算啥,多年前 windows nt4 跑计费服务器...现在想想都可怕,关口结算就是个垃圾玩意。
不打 patch 肯定不行,但是一个强壮的策略或者企业级的防火墙是 windows server 必须安装的。 |
46
UnknownR 2017-08-13 00:33:29 +08:00
我不知道你们当初是怎么选择的 windows 服务器,大部分的 patch 和 deploy 都是要重启的,微软自家的服务器也一样,但是一般都是多台物理服务器做分流与负载均衡,要么是装在 hyper-v 上,一般步骤是测试,通告监控软件,截流,下线,打补丁,测试,上线,引流,通告监控软件,作为域内服务器,都是在半夜或者周末来更新重启的,选择一个系统和服务之前了解它的特性是必要过程
|
47
jhdxr 2017-08-13 02:38:23 +08:00
看到#37 和 #41,我觉得吧。。。楼主你不会用 windows 就还是趁早迁走比较好。不是说会用桌面版 windows 就能轻松搞定 windows 的服务器的。
顺便回答主贴问题: 1. 服务器为什么不能随便重启?重启服务器有什么问题?会造成服务中断?那么你所运行或依赖的所有环境也都是始终保证在线的?有计划有准备的服务离线不应该是正常情况吗? 2. services 里能直接配置依赖关系。还是那句话,会用 windows 桌面版不代表你就会配服务器了。Linux 是要投入精力去学的,windows 同样也是。 另外纠正 @jarlyyn,windows 才是微内核的,Linux 是(唯一的?)宏内核 |
48
fox0001 OP |
49
fox0001 OP @jhdxr #47 是的,我们知错了。上面说了很多,就不废话了。我们会纠正历史错误,拥抱 Linux,以及开源软件。
|
50
venster 2017-08-13 07:55:48 +08:00 via iPhone
你这典型的会用 Linux 就觉得天下无敌了。
|
52
0017 2017-08-13 09:18:24 +08:00
1. 一般用途的服务器窗口期更新重启 必须 24 小时在线的服务器至少要有一个热备份吧? 先停一个更新完再操作另一个
2.依赖关系设置很简单啊,一条命令就够了... |
53
tianxiacangshen 2017-08-13 09:30:51 +08:00
我也只会用 windows
吧数据库和程序分开,然后将程序备份在临时服务器,备份的时候将域名解析到临时服务器,升级完再解析回来,这样就不会中断网站,难道这样不行吗? |
54
msg7086 2017-08-13 11:55:49 +08:00 2
@jhdxr @jarlyyn 说的也不算错。
Windows 是混合内核,内核组件啊驱动啊也是运行在内核态的。微内核需要把各种组件放在用户态运行。 不能无重启更新,除了上面说的文件锁导致无法热替换以外,还因为很多核心组件是系统必不可少的部分。Linux 下的核心用户态组件,比如 init,也需要重启才能生效,只不过 Windows 下的核心用户态组件太多( GUI,桌面,SMB 等等),所以需要重启的概率大幅增加。 @fox0001 至于 Windows Server 嘛,的确不是这么用的。 我们接触的许多客户也是用的 Windows Server,比较通行的配置是配合 iSCSI SAN 做 Failover Cluster,两台或者多台服务器同时提供同样的服务,然后 Failover Cluster 会控制哪台机器接管服务 IP 与对应的磁盘组,需要维护的时候只要进控制台选择把服务 Failover 到另一个节点就行了。 虚拟化环境下的 Hyper-V Cluster 也可以 Failover,需要维护的节点直接把 VM 迁移到其他 Cluster Node 去就行了,VM 不会中断服务,连 VM 的内存数据也会同步过去的。 单机 Windows Server ?别闹了。 |
55
Showfom 2017-08-13 18:52:53 +08:00 via iPhone
Linux 大多数更换内核也要重启呀
|
56
akira 2017-08-13 23:24:25 +08:00
既然是小网站,那随时出个更新公告,停机更新下就是了。也不会有什么大问题的啊。
|
58
cpublic 2017-08-27 13:33:48 +08:00
Windows 服务器目前看也就是“土豪”才会用的服务器端系统了!
|
59
vipcc 2019-09-29 07:52:19 +08:00 via Android
……生产环境只一台服务器????
|