Không thể giải quyết tên máy chủ tên lửa - cách thay đổi tên máy chủ một cách sạch sẽ mà không cần khởi động lại


7

Tại nơi làm việc, tôi làm việc trên một trang web nhỏ sử dụng máy chủ Ubuntu được lưu trữ trên các phiên bản Amazon EC2. Chúng tôi có hai máy chủ web và tại bất kỳ thời điểm nào, một trong số chúng là 'trực tiếp' và một là 'thử nghiệm', nhưng khi chúng tôi có các tính năng hoặc sửa lỗi mới hoạt động trên máy chủ 'thử nghiệm', chúng tôi chạy một kịch bản sử dụng API AWS để hoán đổi địa chỉ IP được gán cho hai hộp để các tên miền được phục vụ bởi hai máy chủ được hoán đổi.

Do đó, tại bất kỳ thời điểm nào, một trong những máy chủ này có thể là máy chủ 'sống' hoặc máy chủ 'thử nghiệm' của chúng tôi, nhưng đây không phải là trạng thái vĩnh viễn.

Để tránh nhầm lẫn khi SSH vào một trong hai máy chủ này, đặc biệt là nếu một người ngớ ngẩn nào đó (như tôi) để một phiên SSH mở trong một thời gian dài và bị nhầm lẫn về việc họ đang sử dụng máy chủ nào, tôi muốn sửa đổi tên máy chủ của hai máy chủ sao cho lời nhắc và tiêu đề trong cửa sổ terminal sẽ đọc ubuntu@ourwebsiteLIVEhoặc ubuntu@ourwebsiteTESTINGtùy thuộc vào việc máy chủ hiện đang hoạt động hay đang thử nghiệm.

Tôi biết tôi có thể làm điều này bằng cách chạy hostname ourwebsiteLIVEvv trong tập lệnh hoán đổi IP của chúng tôi và đã thực hiện điều này. Nó hoạt động, nhưng bây giờ mỗi khi tôi có sudobất cứ thứ gì trên máy chủ của chúng tôi đều in

sudo: không thể giải quyết máy chủ ourwebsiteLIVE

điều này dường như không phá vỡ bất cứ điều gì, nhưng khá khó chịu. Tôi nghĩ rằng nó cũng có thể sẽ phá vỡ mọi thứ trong tương lai nếu tôi cố gắng xâu chuỗi các lệnh đầu ra cho nhau, vì vậy tôi đoán nó về mặt kỹ thuật không chỉ là vấn đề thẩm mỹ.

Tất cả các giải pháp tôi đã thấy đối với thông báo 'không thể giải quyết tên máy chủ' liên quan đến sửa đổi /etc/hostshoặc một số tệp tương tự và sau đó khởi động lại máy chủ . Tôi có thể thấy rằng điều này sẽ tốt cho nhiều trường hợp sử dụng, nhưng không lý tưởng cho chúng tôi vì chúng tôi sửa đổi tên máy chủ thường xuyên và lập trình; chúng tôi không muốn phải đợi khởi động lại mỗi lần chúng tôi chạy tập lệnh hoán đổi.

Có cách nào để tôi có thể làm cho thông báo lỗi biến mất mà không phải khởi động lại không?


1
Tiêu đề được hiển thị bởi cửa sổ đầu cuối của bạn sẽ cần phải được đặt lại và tôi nghi ngờ rằng ssh sẽ kiểm tra thường xuyên nếu tên máy chủ đã thay đổi (tại sao nên đặt tên máy chủ là vĩnh viễn). Và tôi thấy "thử nghiệm chuyển đổi / sống" là một ý tưởng lạ. Chỉ cần có một máy kiểm tra và sao chép dữ liệu sang máy trực tiếp bất cứ khi nào nó không hoạt động vì?
vonbrand

@vonbrand Thay đổi IP sẽ giết tất cả các phiên ssh mở, vì vậy sửa đổi tiêu đề của các phiên hiện đang mở không phải là vấn đề. Về lý do tại sao chúng ta không cố gắng sống khi mọi thứ đang hoạt động, đó là vì cách của bạn chúng ta có khả năng làm hỏng bất cứ khi nào chúng ta thay đổi một cái gì đó trên các máy chủ không có trong repo kiểm soát nguồn của chúng ta và do đó không phải là một phần trong quá trình thay đổi thông thường của chúng tôi (ví dụ: sửa đổi tệp cấu hình hoặc cài đặt phần mềm mới). Theo cách của chúng tôi, không có rủi ro chúng tôi sẽ phá vỡ trang web bằng cách bắt đầu triển khai vào trang web trực tiếp (và hoàn nguyên các lỗi quản trị máy chủ là dễ dàng; chỉ cần trao đổi lại).
Mark Amery

Câu trả lời:


1

Tôi sẽ đề nghị sử dụng nss-myhostname . Nó là một plugin nss luôn giải quyết tên máy chủ hiện tại của bạn, do đó không cần phải sửa đổi /etc/hosts.

Vì vấn đề bạn đang mô tả chỉ là sự cố của trình giải quyết, bạn có thể khắc phục bằng cách thiết lập DNS phù hợp, tức là ourwebsiteLIVE.$DOMAINchỉ giải quyết ip của máy.


Có lẽ tôi thiếu kiến ​​thức cơ bản, nhưng tôi không hiểu đoạn cuối của bạn. Bạn có thể làm rõ? Đối với đoạn đầu tiên của bạn, tôi không hiểu đầy đủ các công cụ làm gì (tôi thực sự không nắm bắt được ý nghĩa của việc thay đổi tên máy chủ để bắt đầu) nhưng có vẻ như công cụ được liên kết sẽ giải quyết vấn đề của chúng tôi. Cảm ơn bạn. Tôi sẽ kiểm tra nó vào thứ Hai và chấp nhận nếu nó hoạt động.
Đánh dấu Amery

0

Cách khắc phục nhanh có thể là hostname ourwebsiteLIVEVÀ chỉnh sửa /etc/hostsmà không khởi động lại lỗi sẽ biến mất.


Bạn có thể mô tả những thay đổi tôi cần phải thực hiện? Tôi có cần phải sửa đổi chỉ /etc/hostshay /etc/hostnamekhông?
Đánh dấu Amery

bạn chỉnh sửa tất cả ourwebsiteOFFtrong tệp /etc/hoststhành ourwebsiteLIVEvà thực thi lệnh trên dòng lệnh hostname ourwebsiteLIVEsau đó đăng nhập lại.
xx4h

0

Tôi biết tôi sẽ mang câu hỏi này trở về từ cõi chết nhưng hiện tại (ít nhất là trong Ubuntu Server 16.04), bạn có thể thực hiện các thao tác sau để cập nhật tên máy chủ khi không khởi động lại.

Trước tiên hãy chỉnh sửa / etc / hosts và / etc / hostname bằng tên máy chủ mới của bạn

Chạy các lệnh

systemctl restart systemd-logind.service
hostnamectl --static --transient --pretty set-hostname YOURHOSTNAME

Tên máy chủ mới của bạn hiện đang hoạt động mà không cần khởi động lại và tất nhiên sẽ tồn tại sau khi khởi động lại.


-1

Ahem ... thay đổi linh hoạt tên máy chủ của máy chủ có thể sẽ khiến rất nhiều trình nền hệ thống gặp trục trặc, và thường theo những cách không rõ ràng ngay lập tức. O / S hy vọng tên máy chủ sẽ được đặt khi hệ thống được cài đặt và không thay đổi. hostnamehầu như luôn được kiểm tra chỉ một lần khi khởi động quá trình. Có nhiều cách khác để chuyển đổi phiên bản một cách nhanh chóng ...

Cách đơn giản nhất là thiết lập mức độ gián tiếp bằng cách sử dụng liên kết tượng trưng ...

Bạn không cần hai máy chủ cho việc này. Thay vào đó, trên cấp độ thư mục tương tự như thư mục "home" của trang web (ví dụ /var/www, hosted/server/htmlvv) tạo ra một thư mục cho mỗi phiên bản của trang web như trong ...

.../
.../v1.0
.../v1.1a
.../v1.1b
   :

Các v1.1av1.1bsẽ xen kẽ của bạn "LIVE" và "TEST".

Đây là sự quyết định ...

Tạo liên kết tượng trưng rất nhanh để bạn có thể tạo lại chúng khi bạn muốn trao đổi các phiên bản với trang web dưới tải nhẹ mà không bị gián đoạn quá nhiều.

Dịch vụ lưu trữ mà tôi dựa trên điều này đòi hỏi thư mục "nhà" của trang web phải là "html" như trong ...

/home/group/subgroup/myuserid/html

Vì vậy, chúng tôi đổi tên htmlthư mục mà dịch vụ cung cấp cho chúng tôi thành một thư mục phiên bản v1.1avà tạo một liên kết tượng trưng cho nó html.

Với bộ liên kết tượng trưng của chúng tôi, danh sách thư mục có thể trông giống như ...

.../
.../TEST -> v1.1b
.../html -> v1.1a
.../v1.0
.../v1.1a
.../v1.1b

Khi thực hiện thay đổi tệp trang web trong .../v1.1bthư mục, chúng tôi sẽ chạy một tập lệnh loại bỏ (Ubuntu có unlinklệnh an toàn hơn ) và tạo lại các liên kết tượng trưng bằng "html" và "TEST" được hoán đổi như trong ...

.../
.../TEST -> v1.1a
.../html -> v1.1b
.../v1.0
.../v1.1a
.../v1.1b

Hi vọng điêu nay co ich.

2013/02/2016 18:15:12 EST bổ sung ...

Nghiên cứu ngày nay cho thấy có rất nhiều ý kiến ​​trái ngược về điều này dường như.

Kinh nghiệm của riêng tôi đến từ việc dành nhiều thời gian để khôi phục chức năng "zeroconfig" của Xwindows và Ubuntu sau khi thay đổi tên máy chủ, vì một vài lưu ý của tôi từ sự cố cho thấy ...

  • Ubuntu-10.04
  • Mạng lưới

    • Kể từ bản cập nhật tháng 5 năm 2011, các yêu cầu cài đặt mạng đã thay đổi đáng kể để hỗ trợ Zeroconf!
    • Vấn đề chính gặp phải liên quan đến lệnh 'tên máy chủ'.

      • Phương thức Ubuntu sử dụng để duy trì tên máy chủ, địa chỉ IP, v.v. đã thay đổi.
      • Các tập tin / etc / hostname và / etc / hosts hiện là quyền cho tất cả các giá trị này
      • Không còn có nhiều bí danh cho một máy chủ trong / etc / hosts
      • Trong / etc / hosts, tên đầu tiên phải là Tên miền đủ điều kiện (FQDN) - nói cách khác, hostname.domainname.
      • SSH hiện gửi FQDN thay vì chỉ tên máy chủ, vì vậy /etc/hosts.allow phải được thay đổi từ ...

        TẤT CẢ: ĐỊA PHƯƠNG
        đến ..
        TẤT CẢ: ĐỊA PHƯƠNG * .DORIS

  • Trích từ http://www.oldapps.com/linux/ubfox.php?old_ubfox=35?changelog ...

    • 'Avahi sẽ luôn bắt đầu ngay cả khi có tên miền .local. Gói avahi-daemon, thực hiện tiêu chuẩn mDNS "zeroconf", trước đây bao gồm một kiểm tra để tránh chạy khi có tên miền .local DNS xung đột, vì đã báo cáo rằng một số ISP quảng cáo tên miền .local như vậy trên mạng của họ, để lại Máy chủ Ubuntu không thể thấy tên được quảng cáo trên mạng cục bộ (327362). Trong Ubuntu 9.10, avahi-daemon được bắt đầu bất kể. Có thể điều này có thể gây ra vấn đề khác. Nếu mạng của bạn được cấu hình theo cách này, bạn có thể tắt mDNS bằng lệnh sau: '

      sudo dừng avahi-daemon sudo sed -e '/ ^ start /, + 1s / ^ / # /' /etc/init/avahi-daemon.conf

Một vài bài viết liên quan ...


Như tôi đã giải thích đã phản hồi với một bình luận, lý do chúng tôi sử dụng phát sóng nóng không chỉ đơn giản là có thể đẩy các thay đổi vào mã của chúng tôi để tồn tại. Điều đó đã dễ dàng với hai máy chủ và kiểm soát nguồn. Việc phát sóng nóng cho phép chúng tôi cài đặt hoặc cập nhật phần mềm của bên thứ ba hoặc thay đổi những thứ như cấu hình máy chủ Apache của chúng tôi yêu cầu chúng tôi khởi động lại nó, theo cách có thể đảo ngược ngay lập tức và không gây ra bất kỳ thời gian chết nào trên trang web trực tiếp. Những gì bạn đã đề xuất không phải là một giải pháp thay thế, đó là một bước lùi đáng kể từ việc chỉ có các máy chủ có thể truy cập được mà không thay đổi tên máy chủ.
Đánh dấu Amery

Ngoài ra, việc lưu trữ cả hai trang web trên một máy chủ có vẻ nguy hiểm đối với tôi vì nếu chúng tôi đẩy thứ gì đó lên trang dàn dựng khiến nó tiêu thụ hết bộ nhớ hoặc dung lượng CPU của máy chủ thì nó cũng phá vỡ trang web trực tiếp. Cuối cùng, bạn có thể mô tả những trục trặc không rõ ràng khi thay đổi tên máy chủ có thể gây ra không? Bạn đã khẳng định sự tồn tại, nhưng không cung cấp ví dụ.
Đánh dấu Amery

Ngoài chỉnh sửa của tôi ở trên, có một số câu hỏi liên quan được liệt kê ở cột bên phải có thể làm sáng tỏ hơn về điều này.
DocSalvager
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.