Sachverhalt:
A.
Mit Verfügung vom 17. November 2005 sprach die IV-Stelle Luzern der 1976 geborenen A._ rückwirkend ab 1. August 2002 eine halbe Rente der Invalidenversicherung zu. Als Ergebnis des im Juni 2013 eingeleiteten Verfahrens zur Überprüfung des Leistungsanspruchs hob die IV-Stelle mit Verfügung vom 9. April 2015 die halbe Rente auf den gesetzlich vorgesehenen Zeitpunkt hin auf.
B.
Dagegen erhob A._ Beschwerde, welche das Kantonsgericht Luzern, 3. Abteilung, nach Einholung eines Gerichtsgutachtens (MEDAS Zentralschweiz vom 22. Juli 2016) mit Entscheid vom 21. November 2016 abwies.
C.
Mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragt A._, der Entscheid vom 21. November 2016 (soweit nicht die Beweiskosten betreffend) sei aufzuheben; es sei ihr weiterhin mindestens eine halbe IV-Rente zuzusprechen; eventualiter sei die Rente frühestens per 23. März 2016 aufzuheben; subeventualiter sei die Sache zur Neubeurteilung an die IV-Stelle zurückzuweisen, unter Gewährung der unentgeltliche Rechtspflege.
Die IV-Stelle Luzern und das Bundesamt für Sozialversicherungen verzichten auf eine Vernehmlassung.

Erwägungen:
1.
Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann u.a. die Verletzung von Bundesrecht gerügt werden (<ref-law>). Die Feststellung des Sachverhalts (durch die Vorinstanz; <ref-law> kann nur gerügt werden, wenn sie offensichtlich unrichtig [willkürlich; <ref-ruling> E. 10.1 S. 445] ist oder auf einer Rechtsverletzung im Sinne von Artikel 95 beruht und wenn die Behebung des Mangels für den Ausgang des Verfahrens entscheidend sein kann (<ref-law>; vgl. auch <ref-law>). In Bezug auf die vorinstanzliche Sachverhaltsfeststellung und Beweiswürdigung gilt eine qualifizierte Rüge- und Begründungspflicht (<ref-ruling> E. 1.3 S. 261). Auf ungenügend begründete Rügen oder bloss allgemein gehaltene appellatorische Kritik am angefochtenen Entscheid tritt das Bundesgericht nicht ein (<ref-ruling> E. 2.2 S. 246 mit Hinweis).
2.
Die im Streit liegende Vorinstanzlichbestätigte Rentenaufhebung auf Ende Mai 2015 erfolgte gestützt auf <ref-law>, was unbestritten ist. Die Vorinstanz ist in Würdigung der Akten zum Ergebnis gelangt, eine klare Verbesserung des Gesundheitszustandes im Vergleichszeitraum (17. November 2005 bis 9. April 2015) sei ausgewiesen. Die Diagnosen einer Schmerzstörung und einer posttraumatischen Belastungsstörung (PTBS), welche bei der Rentenzusprache noch vorgelegen und die Arbeitsfähigkeit um 50 % eingeschränkt hatten, hätten bei der aktuellen Beurteilung nicht mehr gestellt werden können. Gemäss der interdisziplinären Einschätzung im Gerichtsgutachten vom 22. Juli 2016 sei die Beschwerdeführerin spätestens im Zeitpunkt der Verfügung vom 9. April 2015 vollständig arbeitsfähig gewesen.
3.
Die Beschwerdeführerin bestreitet den Beweiswert des Gerichtsgutachtens (vgl. dazu <ref-ruling> E. 5.1 S. 232; <ref-ruling> E. 3b/aa S. 352). Was sie vorbringt, ist indessen nicht stichhaltig: Ihre Einwendungen gegen das rheumatologische Teilgutachten vom 8. Juni 2016 sind entweder appellatorischer Natur oder zu wenig substanziiert. Insbesondere hat die Vorinstanz in E. 7.3 des angefochtenen Entscheids dargelegt, weshalb der Umstand, dass der Rheumatologe der Medizinischen Abklärungsstelle nicht angab, welche zwei Kriterien des angewendeten Prüfschemas betreffend das Vorliegen eines zervikozephalen Syndroms er als erfüllt betrachtete, die Beweiskraft der Expertise nicht zu mindern vermag, wozu sie sich nicht weiter äussert. Hinsichtlich der Kritik am psychiatrischen Teilgutachten vom 2. Mai 2016 sodann bestreitet sie die Feststellung der Vorinstanz nicht, dass bei der Rentenzusprache eine Schmerzstörung und eine PTBS bestanden hatten, welche die Arbeitsfähigkeit um 50 % einschränkten, bei der aktuellen Beurteilung hingegen keine entsprechenden Diagnosen mehr gestellt werden konnten. Entgegen ihren Vorbringen hat das Kantonsgericht nicht festgestellt, dass "noch im Jahr 2013 eine PTBS und eine Schmerzstörung vorgelegen haben"; es erwähnte lediglich, u.a. unter Hinweis auf den Bericht von Dr. med. B._ vom 16. Juli 2013, dass seit Jahren eine (psychiatrisch-psycho-) therapeutische Behandlung durchgeführt wurde.
4.
Die Beschwerdeführerin beanstandet den Zeitpunkt der Rentenaufhebung (Ende Mai 2015), dies zu Recht:
4.1. In der zusammenfassenden interdisziplinären Beurteilung hielten die Gutachter fest, dass aufgrund der Aktenlage retrospektiv spätestens ab Zeitpunkt der strittigen IV-Verfügung vom 9. April 2015 von einer Arbeitsfähigkeit von 100 % in angepasster Tätigkeit auszugehen sei. "Eine wesentliche Änderung des Gesundheitszustandes im Vergleich zu 2005/2001 kann (...) in Berücksichtigung vorliegender Akten, anamnestischer Angaben sowie erhobener Befunde aktuell nicht festgestellt/objektiviert werden". In Abweichung von dieser Beurteilung hat das Kantonsgericht eine revisionsrechtlich relevante Verbesserung des psychischen Gesundheitszustandes im Vergleichszeitraum (17. November 2005 bis 9. April 2015) bejaht (E. 2 hiervor). Weiter hat es erwogen, da der psychiatrische Gutachter nicht aufzeige, wann die Verbesserung genau stattfand, könne auf die interdisziplinäre Einschätzung abgestellt werden, wonach die Beschwerdeführerin spätestens im Zeitpunkt der Verfügung vom 9. April 2015 vollständig arbeitsfähig war.
4.2. Es ist ein Widerspruch, bezüglich der Änderung des Gesundheitszustandes nicht auf das Gerichtsgutachten bzw. das psychiatrische Teilgutachten abzustellen, hinsichtlich des dafür massgebenden Zeitpunktes jedoch schon. Dies gilt umso mehr, als es sich beim 9. April 2015, seit wann spätestens die attestierte Arbeitsfähigkeit gilt, offensichtlich um ein rein formelles Kriterium handelt. Unter diesen Umständen kann eine revisionsrechlich bedeutsame Änderung des Gesundheitszustandes ohne Wiederspruch frühestens ab dem Zeitpunkt des Gerichtsgutachtens vom 22. Juli 2016 angenommen werden. Die Beschwerdeführerin hat daher nach <ref-law> bis Ende Oktober 2016 Anspruch auf eine halbe Rente. Der Umstand, dass sie die Rente lediglich bis 23. März 2016, den Zeitpunkt der psychiatrischen Untersuchung beantragt, kann ihr angesichts des Hauptantrages nicht schaden (<ref-law>).
5.
Die Gerichtskosten sind den Parteien nach Massgabe ihres Unterliegens aufzuerlegen (<ref-law>). Die Versicherte hat Anspruch auf eine reduzierte Parteientschädigung (<ref-law>). Ihrem Gesuch um unentgeltliche Rechtspflege kann im Übrigen entsprochen werden (Art. 64 Abs. 1 und 2 BGG). Es wird indessen ausdrücklich auf <ref-law> hingewiesen, wonach sie der Gerichtskasse Ersatz zu leisten hat, wenn sie später dazu im Stande ist.

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird teilweise gutgeheissen. Der Entscheid des Kantonsgerichts Luzern, 3. Abteilung, vom 21. November 2016 und die Verfügung der IV-Stelle Luzern vom 9. April 2015 werden dahingehend abgeändert, dass die Beschwerdeführerin bis Ende Oktober 2016 Anspruch auf eine halbe Rente der Invalidenversicherung hat. Im Übrigen wird die Beschwerde abgewiesen.
2.
Das Gesuch um unentgeltliche Rechtspflege für das bundesgerichtliche Verfahren wird gutgeheissen, und es wird der Beschwerdeführerin Rechtsanwalt Andreas Bänziger als Rechtsbeistand beigegeben.
3.
Die Gerichtskosten von Fr. 800.- werden zu Fr. 500.- der Beschwerdeführerin und zu Fr. 300.- der Beschwerdegegnerin auferlegt. Der Anteil der Versicherten wird einstweilen auf die Bundesgerichtskasse genommen.
4.
Die Beschwerdegegnerin hat den Rechtsvertreter der Beschwerdeführerin für das bundesgerichtliche Verfahren mit Fr. 800.- zu entschädigen.
5.
Dem Rechtsvertreter der Beschwerdeführerin wird aus der Bundesgerichtskasse eine Entschädigung von Fr. 1'200.- ausgerichtet.
6.
Die Sache wird zur Neuverlegung der Gerichtskosten und der Parteientschädigung des vorangegangenen Verfahrens an das Kantonsgericht Luzern zurückgewiesen.
7.
Dieses Urteil wird den Parteien, dem Kantonsgericht Luzern, 3. Abteilung, und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 7. August 2017
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Die Präsidentin: Pfiffner
Der Gerichtsschreiber: Fessler