Tech Choices - Why we use Centos instead of Debian / Ubuntu
chinanetcloud.com
chinanetcloud.com
At my current job, we pxe install thousands of CentOS compute nodes and never touch yum again. When it's time to update, we build a new kickstart and re-install. That's the only reasonable way to run RHEL/CentOS and not lose your mind.
I have debian systems that are still running dist-upgraded versions of 10 year old installs, and the dpkg database is sane and clean. You can't do that with RHEL.
The unfortunate fact is that, in the enterprise world, people other than system admins make the decision to run RHEL at the expense of sysadmin time and sanity.
Generally speaking, there are better package review standards applied to Fedora (Red Hat and CentOS upstream) and you don't have things like debconf that make figuring out how to do a non-interactive install a little confusing. This means that in general there is less "randomness" that will occur than in your typical apt package.
Kickstart is also easier for users to bootstrap installations than preseed files, which in many cases require scripts to all be written on a single line. Writing preseed files causes me immense pain.
.rpmnew is also a nice system for replacing configuration files. By contrast, I've had apt purge fail when files were deleted prior to running the purge.
Ultimately I'm not sure what kind of repositories you are working with, but that may be the problem.
I would choose CentOS or RHEL every time.
Many slowness issues can be solved by maintaining a local mirror and also by disabling the fastestmirror plugin -- while perhaps good for slow connections, the mirror speed checks cause added delays.
Centos & Red Hat are great if you have a single package you need to deploy to a machine and all the dependencies are already there or easy to pull down from yum. You get the advantage of not having a capricious OOMKiller process that can randomly take down your system. But if you're actually in the process of building something, working on Centos is just a pain in the ass.
apt-get is fine, and I wouldn't be at all unhappy with servers running Debian, but yum is my preference.
You can sort through tens of thousands of existing PKGBUILDs on the AUR [1], which typically makes it quick and easy to start packaging software for Arch. You can even sync a flat text file database of all official Arch packages with abs [2]. The ability to reverse engineer every PKGBUILD for a wide variety of software is a major plus in my book.
Writing a PKGBUILD takes roughly the same effort as compiling software from source with a bash script. PKGBUILDs are simple to write, and there's just enough "magic" in Pacman to keep things sane.
Nine times out of ten, the PKGBUILD writing process boils down to copy/pasting directions from README or INSTALL files. It's like a bash script, except more 'done-for-you'. Finding exact dependencies is typically a cinch with the AUR and tools like packer.
Maintaining a rolling distro can be a labor of love, but if you love the system, you'll find it may significantly increase your overall sanity. It's another way of doing things, but I consider choice of distro to be one of the more important decisions to make, and IME, Arch has been such a significant departure from other distros that not trying it in a serious capacity is roughly equivalent to not trying Vim / Emacs ever in your career. Which is to say, I think it's a mistake not to at least see what it may offer you, especially if you're in any doubt.
I hope my positivity is only seen as that: positivity, and not overzealous dedication to one specific toolset. Arch probably isn't a panacea, nor will I claim that it's a perfect fit for your way of doing things. But I have never found something as pleasant as Pacman to work with. In addition, I never would've even tried Arch if I hadn't been slightly flustered by the seemingly irrational exuberance random sysadmins displayed for the system.
Er, what? The OOM killer is part of the kernel. It's not a process, and it's not distribution-dependent.
In which of these does Debain fall short?
Perhaps the main difference is that there is more official vendor support for Redhat i.e. device driver RPM's etc. This could be something like an LSI RAID card perhaps, or a filesystem like Stornext. I know you can often find community built software/drivers for Debian but some organisations and people prefer an "official" source.
Debian has a much bigger packaging ecosystem, and Ubuntu's popularity means that more and more things just never get tested on RH-derivatives.
While I have a lot of respect for FreeBSD's developers, I'd be unwilling to deploy it for production on servers; this is at least partially my own inexperience with the system...but I'm simply afraid to trust a system that makes it so easy for me to shoot myself in the foot.
Even with my own very limited use, I've never had a FreeBSD system that didn't end up utterly trashed eventually (in such a state that I chose to reinstall rather than try to fix it, because I had no idea where to start on fixing it; I'm sure a more experienced FreeBSD user would have been more capable of getting the system working again). I can't imagine what would happen if I were using it heavily, without first spending months or years learning how to avoid the pitfalls I run into so readily.
I had a similar level of experience with Debian (which is to say, not much), but never had a problem keeping it running. My experience is much higher on Red Hat based distros (I've managed CentOS and RHEL servers, and before that Red Hat Linux servers, for almost two decades), so I can't really compare it to FreeBSD, but I know our customers rarely run into OS issues on RHEL or CentOS, and we have a lot of them. CentOS represents more than half of our user base.
I never experienced the problem you mentioned with packages... but packages are frozen at release.. so they're never updated... so you end up having to use ports for everything anyway. I always disliked having to compile every single package from source. If you have a large number of systems, it's worth setting up a build server and creating your own packages.
Major upgrades ARE scarier than on Linux. They have a fairly new binary upgrade tool that I never used.. upgrades using build world generally work ok.. just update your source tree, wait a few days for anyone to report bugs on the mailing list, and then run build world. You can't do this over ssh though.. you need concole access. Again, if you have a large number of machines, setting up a build server is worth it.
With that said though... FBSD has been slowly losing out in my company. 10 years ago, I used it everywhere... then fbsd neglected the desktop (not enough resources in the project), and Linux got so far ahead, that I was pretty much forced to switch to Linux on every workstation. Then a few years ago, found fbsd wasn't stable when virtualized.. ran a custom build on Xen for a while.. but eventually moved to Debian.. so it's now about 90% Linux.
The claim that "in our experience, [Debian/Ubuntu] are not nearly as stable or trouble-free as RHEL/CentOS" says more about their lesser experience with those systems than it does about Debian or Ubuntu.
So while they do have "less experience" they do have ongoing experience with Debian or Ubuntu. They say. We don't know what that means it could mean 1 machine per year or it could mean 10 per month.
Now if they hadn't needed to support essentially any Debian/Ubuntu that might mean they are stale in that area. So without qualification of their exact experience "how often" it is really hard to tell the bias in that statement wouldn't you agree?
No, because many people have experience which contradicts theirs, and they don't provide any support for their claim: no information on what the stability issues or troubles they encountered were, no information on the causes and how they were specific to the OS in question as opposed to e.g. user error, no information about how CentOS would do better on that issue, etc.
All the indications are that they're making a very typical sort of claim that people make when trying to defend a decision that they're not qualified to defend. They provide no reasons to take it seriously. As I said, it's content-free.
- The fact that packages which install server software autostart the server on install, and the mechanism to disable this can vary package to package. I'd rather install-configure-then-start than install-disable-configure-then-start.
- The mechanisms for setting options for packages to be installed are geared towards interactive use. You have to disable it popping up a curses dialog, and I don't think there's an easy way to pre-configure them so you just wind up with defaults if you do.
- The version of upstart in 12.04 is really limited, and the mix of packages using old and new style init can be frustrating at times.
[1] Perspective check: I'm mostly a software developer, but I also admin my own servers for personal projects as well as having it as a peripheral aspect to my job at times.
I eventually settled on this: If you're using Upstart you get auto-start by default. For everything else you'll have to turn on auto-start at boot via whatever mechanism is normal for your distribution.
That means for Ubuntu you get auto-start on boot the moment you install the package. For Debian you'll use update-rc.d and for RHEL-based distros you'll use chkconfig.
I have no idea if I made the right decision though since there's no standard. Sometimes it annoys the hell out of me that a package configures itself to start at boot and other times I wish it did auto-configure itself to start at boot. It all depends on the package and what I want the server to do (primarily).
The thing is that for a desktop user, starting the service is fine. A lot of the time it's what you want. And that's Ubuntu's main raison d'etre.
Also note that autostarting when installing is different from autostarting when booting. It's the former that I find frustrating, not so much the latter. Generally speaking, I have plenty of opportunity to tweak the boot behaviour between installing and rebooting (assuming the server ever reboots at all).
I've always had a bit of a problem with Centos, which as I understand takes Redhat's work, removes the proprietary parts, and redistributes for free-as-in-beer - perhaps depriving Redhat of a sale or two. It's not exactly theft, but not sporting either.
Would somebody straighten me out? Am I wrong to avoid Centos based on social principle? What does Redhat think of Centos?
> CentOS is one of the reasons that the RHEL ecosystem is the default. It helps to give us an ubiquity that RHEL might otherwise not have if we forced everyone to pay to use Linux. So, in a micro sense we lose some revenue, but in a broader sense, CentOS plays a very valuable role in helping to make Red Hat the de facto Linux.[0]
[0]http://readwrite.com/2013/08/13/red-hat-ceo-centos-open-sour...
It's a pretty good thing, actually.
I have never worked at RedHat, but it was founded by and is run by Linux and GPL enthusiasts. Unencumbered redistribution of the software is the goddamn point.
For the couple years I've been doing this, I can't think of any downtime that wasn't caused by something other than the OS.
Heck, even my desktop hasn't had OS caused downtime.
I would bet my experience would be the same if I was using CentOS.
Also, there are so many different ways you can automate your server and app deployments, that your choice of OS should really depend on what app you are running. A cutting edge app might need the latest Ubuntu release to get the latest packages. Another app might need the stability of an LTS release. And another might only work with an RPM based OS and specific versions of dependencies that are only found on CentOS.
Anyway, that's my opinion and experience. I am curious if there's statistical/scientific evidence supporting the idea that CentOS/RHEL is more stable than Debian/Ubuntu.
We made this choice recently, choosing Ubuntu 12.04 and a few (popular but unofficial) PPAs, rather than use Ubuntu 13.04.
I manage a large AWS environment at my current gig, and all of our code is in git. With configs in puppet, code in git, I can deploy to new OS version instances in the background, do testing/QA, and then swap out the old OS environment for the new one all transparently to the user.
Now if you're talking bare metal, yes, it makes sense to go with LTS releases.
It all depends on what your equipment lifecycle is.
I think most people's problems with Ubuntu having too short of a release cycle come from people installing the current version of Server instead of the LTS version. I've known shops that stupidly used non-LTS Ubuntu server releases, and then kept them running after their support cycle ended...
I think maybe that's what happens when people who don't really know how the Ubuntu ecosystem just start using stuff.
I also run 30ish VMs with it at work. Only real issue I've ever run into is how the /boot partition fills up with old kernels...
So, I have yet to see any proof that Debian is less stable than RedHat. Or the other way around. Heck, how would you even measure that?